假设我有以下命令行:
./app foo bar baz我想把这个数组拿出来:
["foo", "bar", "baz"]考虑到位置参数可以是任意计数,有什么方法可以在鼓掌中做到这一点呢?
发布于 2017-05-21 08:18:25
您要寻找的函数是的,您可以这样使用它:
let matches = App::new("My Super Program")
.arg(Arg::with_name("something")
.multiple(true))
.get_matches();
let iterator = matches.values_of("something");
for el in iterator.unwrap() {
println!("{:?}", el);
};如果您不关心保存无效的UTF-8,那么更容易的选择是使用洛西,它返回一个实际的向量(Option<Vec<String>>),而不是迭代器。
let arguments = matches.values_of_lossy("something").unwrap();
println!("{:?}", arguments);请记住,您确实不应该在实际程序中展开值,因为如果不提供参数,它只会在运行时崩溃。这方面的唯一例外是设置了required(true)的参数。在调用get_matches时,它们的缺失将导致运行时错误(带有有用的错误消息)。
https://stackoverflow.com/questions/44094262
复制相似问题