当前位置: 首页 > news >正文

牧和邻宠物网站建设深圳网站开发奇辰科技

牧和邻宠物网站建设,深圳网站开发奇辰科技,平面设计投稿平台,wordpress媒体库搬家技术的学习从不会到会的过程是最有意思的#xff0c;也是体会最多的。一旦熟练了#xff0c;知识变成了常识#xff0c;可能就失去了记录学习过程的最佳时机。 在我看来学习一门计算机语言和学习人类语言有很多共通之处。我们学习人类语言是从单个的词开始#xff0c;然后…技术的学习从不会到会的过程是最有意思的也是体会最多的。一旦熟练了知识变成了常识可能就失去了记录学习过程的最佳时机。 在我看来学习一门计算机语言和学习人类语言有很多共通之处。我们学习人类语言是从单个的词开始然后是简单句子通过不断的与他人交互练习掌握语法和语言习惯。当熟练到一定程度就可以表达思想。计算的语言也差不多熟悉关键词基本逻辑标准库写应用。只是沟通的对象是机器而已。 既然是学就不能在开始搞的太难。学习本来就是个艰苦的差事。上来就干特别复杂的事情往往会坚持不下去。天下难事必做于易从简入繁从易到难方为正道。 先聊聊最简单的CLI(Command Line Interface)程序。其实我们每学习一门语言的 hello world 程序就是CLI只是没那么多交互而已。 做命令行程序最繁琐的事情是处理交互。交互大体分两种。一种是我们最熟悉shell下的交互模式每次一个命令配合参数实现一次处理返回一组结果。这种模式处理起来比较容易Rust也有相当优秀的第三方lib (clap)。第二种是领域交互就像我是使用MySql或者redis的客户端程序。这种程序可以玩儿的东西就比较多了像如何实现交互如何来做子命令的提示。这些东西 clap 并没有提供需要我们自己来实现。 interactcli-rs是我在工作过程中做的一个交互模式命令行脚手架。实现了一些常用功能。 下面我们来看看如何通过几个步骤快速的实现一个功能相对齐全的CLI程序。和做饭一样能够快速获得成就感的方式是找半成品直接下锅炒一盘。 下面我们具体看看如何通过interactcli-rs实现一个功能齐全的命令行程序 来点感性认识 先把项目clone下来运行个例子 clone 项目 git clone https://github.com/jiashiwen/interactcli-rs.git cd interactcli-rs 命令行模式 cargo run requestsample baidu 交互模式 cargo run -- -i interact-rs requestsample baidu 运行上面的命令是通过http来请求百度 四步做个CLI 首先我们先来看看框架的目录结构 . ├── examples ├── log ├── logs └── src├── cmd├── commons├── configure├── interact├── logger└── request cmd目录是我们做自己功能时要动的主要目录下面我们一步一步的实现requestsample命令。 定义命令 cmd 模块用于定义命令以及相关子命令,requestsample.rs 中定义了访问百度的命令 use clap::Command;pub fn new_requestsample_cmd() - Commandstatic { clap::Command::new(requestsample) .about(requestsample) .subcommand(get_baidu_cmd()) }pub fn get_baidu_cmd() - Commandstatic { clap::Command::new(baidu).about(request www.baidu.com) } new_requestsample_cmd 函数定义了命令 “requestsample”,get_baidu_cmd 函数定义了 requestsample 的子命令 baidu 注册命令 src/cmd/rootcmd.rs 文件中定义了命令树可以在此注册定义好的子命令 lazy_static! {static ref CLIAPP: clap::Commandstatic clap::Command::new(interact-rs).version(1.0).author(Your Name. ).about(command line sample).arg_required_else_help(true).arg(Arg::new(config).short(c).long(config).value_name(FILE).help(Sets a custom config file).takes_value(true)).arg(Arg::new(daemon).short(d).long(daemon).help(run as daemon)).arg(Arg::new(interact).short(i).long(interact).conflicts_with(daemon).help(run as interact mod)).arg(Arg::new(v).short(v).multiple_occurrences(true).takes_value(true).help(Sets the level of verbosity)).subcommand(new_requestsample_cmd()).subcommand(new_config_cmd()).subcommand(new_multi_cmd()).subcommand(new_task_cmd()).subcommand(new_loop_cmd()).subcommand(clap::Command::new(test).about(controls testing features).version(1.3).author(Someone E. ).arg(Arg::new(debug).short(d).help(print debug information verbosely)));static ref SUBCMDS: Vec subcommands(); }pub fn run_app() {let matches CLIAPP.clone().get_matches();if let Some(c) matches.value_of(config) {println!(config path is:{}, c);set_config_file_path(c.to_string());}set_config(get_config_file_path());cmd_match(matches); }pub fn run_from(args: Vec) {match clap_Command::try_get_matches_from(CLIAPP.to_owned(), args.clone()) {Ok(matches) {cmd_match(matches);}Err(err) {err.print().expect(Error writing Error);}}; } 定义好的命令不需其他处理框架会在系统运行时生成子命令树用于在领域交互模式下命令提示的支持 命令解析 src/cmd/rootcmd.rs 中的 cmd_match 负责解析命令可以把解析逻辑写在该函数中 fn cmd_match(matches: ArgMatches) { if let Some(ref matches) matches.subcommand_matches(requestsample) {if let Some(_) matches.subcommand_matches(baidu) {let rt tokio::runtime::Runtime::new().unwrap();let async_req async {let result req::get_baidu().await;println!({:?}, result);};rt.block_on(async_req);};} } 修改交互模式的命令提示 提示符可以在src/interact/cli.rs 中定义 pub fn run() {...loop {let p format!({} , interact-rs);rl.helper_mut().expect(No helper).colored_prompt format!(\x1b[1;32m{}\x1b[0m, p);...}... } 先写到这里下次为大家介绍一下interactcli-rs各种功能是如何实现的。 作者京东科技 贾世闻 来源京东云开发者社区 转载请注明来源
http://www.zqtcl.cn/news/802993/

相关文章:

  • 泰安网站建设哪家强网站流量指标
  • 网站毕业设计开题报告wordpress账户密码忘记
  • 做网站学费多少钱0基础学app程序开发
  • 忻州建站公司辽宁省建设执业信息网官网
  • 北京网站建设 云智互联集安网站建设
  • 无锡市建设培训中心网站私人订制软件平台
  • 宁波网站设计推荐荣盛网络招远网站制作
  • 网站开发维护运维室内设计师怎么找
  • 网站建设如何增加二级页面学网络工程好找工作吗
  • 网站设计的研究方法有哪些wordpress样式路径
  • 网站建设与网页设计...南通网站seo报价
  • 网站开发毕业设计说明书范文关键词排名代做
  • 本地环境建设网站南通网站制作怎样
  • 注册公司多少钱不用交税南昌seo网站推广费用
  • 网站建设与运营的论文的范本wordpress弹框登陆
  • 阿里云做的网站空间动画制作器
  • 徐州企业网站建设做视频网站需要多少上传
  • 记事本做网站怎么加背景图网站开发需要哪些人怎么分工
  • 南宁网站建设找哪家网站被k换域名
  • spring mvc 网站开发网站开发与管理所对应的职位及岗位
  • 国内做视频的网站有哪些宁波网站制作与推广
  • 织梦软件展示网站源码建设工程竣工验收消防备案网站
  • 网站里面的链接怎么做漳州建设网站
  • 有什么网站建设类岗位企业门户网站设计论文
  • 外贸公司如何做公司网站集团网站建设建站模板
  • 嘉兴云推广网站贵州毕节网站建设
  • 班级网站模板青岛哪里有做网站公司的
  • 建设工程设计招标信息网站.制作一个聊天软件需要多少钱
  • 校园网站建设的意见新闻聚合网站开发 技术
  • 网站推广公司兴田德润电话多少wordpress 弹框