Я использую 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
, без необходимости использования--
.Может быть, сделать что-то с порядком аргументов или что-то?