16

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

4

2 回答 2

21

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

于 2020-02-28T20:29:36.580 回答
10

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

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

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

于 2020-07-28T22:55:49.080 回答