【问题标题】:How do I specify a boolean command line flag using Clap?如何使用 Clap 指定布尔命令行标志?
【发布时间】:2021-02-16 12:22:44
【问题描述】:

我想添加一个命令行标志。它是一个标志,所以它不需要参数,它要么存在要么不存在。我还需要知道如何读取标志,TRUE 或 FALSE。

这是定义标志的代码:

.arg(
    Arg::with_name("metal")
        .long("metal-micky")
        .required(false)
        .help("I want metal micky"),
)

我正在尝试读取这样的值:

let z = matches.value_of("metal");

但是当我打印它时它会导致None

println!("FLAG: {:?}", z);

即使我在命令行上指定标志也是None

【问题讨论】:

    标签: rust clap


    【解决方案1】:

    不知道这是否是“批准”的方法,但我使用Args::takes_value

    .arg(
        Arg::with_name("metal")
            .long("metal-micky")
            .required(false)
            .takes_value(false)
            .help("I want metal micky"),
    )
    

    然后检查标志是否通过matches.is_present("metal")

    【讨论】:

      【解决方案2】:

      这个答案已经过时了。你想要的是:

      .arg(
          Arg::with_name("metal")
              .long("metal-micky")
              .takes_value(false)
              .help("I want metal mickey")
      

      然后您检查: matches.is_present("metal")

      【讨论】:

      • 这应该是公认的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      相关资源
      最近更新 更多