如何使用 Clap 指定布尔命令行标志?

How do I specify a boolean command line flag using Clap?

我想添加一个命令行标志。它是一个标志,所以它不需要参数,它存在或不存在。我还需要知道如何读取标志,无论是 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

不知道这是否是“批准”的方法,但我使用 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")

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

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

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