clap教程:第2章

官方参考: https://docs.rs/clap/4.5.1/clap/_derive/_tutorial/chapter_2

附加参数

  1. Postitionals, 位置参数
  2. Options, 选项参数
  3. Flags, 标志参数
  4. Subcommands, 子命令
  5. Defaults, 默认值

位置参数

你可以让用户按其在命令行上的位置指定值:

use clap::Parser;

#[derive(Parser)]
#[command(version, about, long_about = None)]
struct Cli {
   
   
    name: Option<String>,
}

fn main() {
   
   
    let cli = Cli::parse();

    println!("name: {:?}", cli.name.as_deref());
}
$ 03_03_positional_derive --help
用法: 03_03_positional_derive[EXE] [名称]

参数:
  [名称]  

选项:
  -h, --help     打印帮助信息
  -V, --version  打印版本号

$ 03_03_positional_derive
name: None

$ 03_03_positional_derive bob
name: Some("bob")

需要注意默认的参数动作是设置(Set)。如果要接受多个值,则可以通过使用 Append 动作并通过 Vec 类型进行重写:

use clap::Parser;

#[derive(Parser)]
#[command(version, about, long_about = None)]
struct Cli {
   
   
    name: Vec<String>,
}

fn main() {
   
   
    let cli = Cli::parse();

    println!("name: {:?}", cli.name);
}
$ 03_03_positional_mult_derive --help
用法: 03_03_positional_mult_derive[EXE] [名称]...

参数:
  [名称]...  

选项:
  -h, --help     打印帮助信息
  -V, --version  打印版本号

$ 03_03_positional_mult_derive
name: []

$ 03_03_positional_mult_derive bob
name: ["bob"]

$ 03_03_positional_mult_derive bob john
name: ["bob", "john"]

选项参数

你可以使用标志为参数命名:

  • 顺序不重要
  • 可选的
  • 意图清晰

要为参数指定标志,可以在字段上使用 #[arg(short = 'n')] 和(或) #[arg(long = "name")] 属性。当没有给出值时(例如 #[arg(short)]),标志将从字段的名称推断。

use clap::Parser;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值