Rust clap 实现 Go cobra 实现 对比 本文将深入探索 Rust 中一个非常流行的命令行解析工具 clap,本文会先详细介绍 clap Derive 和 Builder 两种构建命令行工具的方式,并实战 httpie 工具,最后还将 clap 与 Go 语言中在命令行解析同样流行的 cobra 进行比较。 版本声明 Rust: 1.76 clap: 4.5.1 clap_complete...
rust中常用的命令行参数解析库,有 Derive方式和 Builder方式,本文介绍Builder方式。 基本使用 // clap="4.4.14" // clap-demo use clap::{Arg, Command, ArgMatches, value_parser, ArgAction}; fn main() { let args = Command::new("app") .version("1.0") .author("keithyin") .about("kits")...
RUST_BACKTRACE=1 cargo run -- name -c ./config.toml -dtest--list valueforname name valueforconfig:"./config.toml" debug mode is kind of on printing testing lists... 32.2 配置解析器 我们可以是 Parse 属性开启构建解析器 #[derive(Parser)] #[command(name="MyApp")] #[command(author="ZHa...
其实就是通过rust的 derive macro来实现上面V2版本中我们手动写的那堆builder api的代码; 上面的#[derive(Parser)] #[clap(long...)]... 相当于做了一些配置,用于编写derive宏时根据配置生成代码。 查看宏生成的代码 我们可以对 【使用 derive api 提升开发体验 (V3)】中的代码使用cargo expand 来查看rust 宏...
上篇我们介绍了 如何在app内使用clap接受参数,本文介绍下如何使用struct 优雅的接收和校验数据 关注 vx golang技术实验室,获取更多golang、rust好文 # 二、derive feature方式 个人更喜欢这种方式,代码看起来更简洁 ## 2.1 添加依赖 ``` cargo add clap --features derive ``` 这里是不需要cargo的 ## 2.2 快...
在使用Rust的库之前, 首先需要添加clap库: cargo add clap --features derive 其他派生clap::_features - Rust (docs.rs) 运行这个命令行会在Cargo.toml中添加 clap= { version ="4.2.1", features = ["derive"] } 关于为什么要加features,可以阅读Rust语言圣经中的内容. ...
cargo add clap -F derive 1. 这样在Cargo.toml中的[dependencies]中就有了相关的信息。 复制 [dependencies] clap = { version = "4.5.1", features = ["derive"] } 1. 2. 其中-F表示,我们只需要clap中的derive特性。 图片 上述流程中,我们使用的clap的版本是最新版,有些和大家用过的语法有区别的话...
(subcommand)] pub cmd: FileOrFolder, } #[derive(Debug, Subcommand)] pub enum FileOrFolder { #[clap(name = "folder")] Folder(FolderOpts), #[clap(name = "file")] File(FileOpts), } #[derive(Args, Debug)] pub struct FolderOpts { /// `path` of the directory in which all files...
在前端开发中我们一般使用import/require进行第三方库的引入,而在Rust中我们使用use来导入第三方库clap中的Parsertrait。也就是说,通过use xx我们就可以使用clap中的特定功能。也就是把对应的功能引入到该作用域内。 定义了一个结构体,它使用clap::Parser的derive宏和command宏,并且只接受一个参数,即name。
我认为您可能遗漏了clap(显然)在解析字符串切片数组时所需的第一个参数,即二进制名称/路径。使用上面...