Как мне указать логический флаг командной строки, используя Clap? - PullRequest
0 голосов
/ 28 февраля 2020

Я хочу добавить флаг командной строки. Это флаг, поэтому он не принимает аргумента, он либо присутствует, либо нет. Мне также нужно знать, как читать флаг, ИСТИНА или ЛОЖЬ.

Это код для определения флага:

.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, даже если я указываю флаг в командной строке.

1 Ответ

1 голос
/ 28 февраля 2020

Не знаю, является ли это "одобренным" методом, но я использую Args::takes_value:

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

Затем проверьте, был ли флаг передан с ArgMatches::is_present

...