我正在使用 structopt 来定义可以使用的参数
mfe -s opt1 -s opt2 -s opt2 this_is_an_argument
或者
mfe -s opt1 opt2 opt3 this_is_an_argument
问题是该this_is_an_argument
参数被解析为一个选项。我知道我可以--
在争论之前使用,但是有更好的解决方案吗?
use std::path::PathBuf;
use structopt::StructOpt;
#[derive(StructOpt, Debug)]
struct CLIArgs {
#[structopt(short = "s", long = "str")]
strings: Vec<String>,
#[structopt(name = "PATH", parse(from_os_str))]
path: Option<PathBuf>,
}
fn main() {
let args = CLIArgs::from_args();
println!("{:?}", args);
}
$ mfe -s foo bar baz /this/is/a/path
CLIArgs { strings: ["foo", "bar", "baz", "/this/is/a/path"], path: None }
我想/this/is/a/path
被解析为path
,而不是被迫使用--
. 也许用参数的顺序做些什么?