繁体   English   中英

如何使用 --list 1 2 3 之类的输入来处理具有多个值的可选参数,而不必多次指定标志

[英]How to get clap to process a optional argument with multiple values with input like --list 1 2 3 without having to specify the flag multiple times

我认为这是由 clap 多个值支持的,但无法使其正常工作。 我想要一些命令,例如“do_something --list 1 2 3”,其中列表将导致结构中的字段设置为 [1, 2, 3]

我有以下代码,它确实适用于 do_something --list 1 --list 2 --list 3,但不适用于 --list 1 2 3 它给了我“错误:找到的参数'2'不是预期的,或在此上下文中无效”

我也试过 --list "1 2 3" 和 --list 1,2,3 但也有错误。

我还能够将多个值用作位置参数,但不能用作带有标志的选项。

--list 1 2 3 是 clap 支持的吗? 如果是这样,我的设置/代码或命令行输入中是否缺少某些内容?

use clap::Parser;

#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
pub struct Cli {
    #[clap(short, long, value_parser)]
    pub list: Option<Vec<i32>>,

}


fn main() {
    let cli = Cli::parse();
    println!("CLI is {:#?}",cli);

}

您正在寻找use_value_delimiter设置。 设置use_value_delimiter = true并将实际分隔符设置为与value_delimiter = ','一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM