作为我的CLI工具的一部分,我有一个clap::Arg
,它带有多个值,代表一个(x, y)
坐标。我希望使用能够将值传递为-p/--position 1 0
.arg(
clap::Arg::with_name("position")
.help("The position for yada yada yada")
.long("position")
.short("p")
.number_of_values(2)
.validator(|p| match p.parse::<usize>() {
Err(_) => Err(String::from("Error string")),
Ok(_) => Ok(()),
}
)
)
虽然此功能适用于我想要的界面,但会创建一些令人困惑的帮助消息:
... Help text ...
OPTIONS:
... other options ...
-p, --position <position> <position> The position for yada yada yada
这里让我感到困扰的是-p, --position <position> <position>
,它似乎表明两个位置正在传递给参数。有什么方法可以用我选择的字符串替换<position> <position>
? (我的目标是在帮助消息中获得类似-p, --position <x> <y>
的内容。)
答案 0 :(得分:3)
快速浏览文档即可了解value_names()
:
为选项参数的值指定多个名称。这些名称仅是修饰性的,仅用于帮助和用法字符串。名称不用于访问参数。参数的值以数字顺序访问(即,如果您指定两个名称,则一个和两个将是第一个匹配的值,两个将是第二个)。
注意:如果值名称的数量大于1,则此方法隐式设置
Arg::number_of_values
。即请注意,您为这些值设置的“名称”数将是满足该参数所需的确切值数注意:隐式设置
Arg::takes_value(true)
.arg(
clap::Arg::with_name("position")
.help("The position for yada yada yada")
.long("position")
.short("p")
.value_names(&["x", "y"])
.validator(|p| match p.parse::<usize>() {
Err(_) => Err(String::from("Error string")),
Ok(_) => Ok(()),
}
)
)