Согласно выпуск 237 , есть параметр global
. Неожиданно, это не упомянуто в документации.
С global = true
это работает хорошо:
use structopt::*;
#[derive(Debug, StructOpt)]
#[structopt(name = "cli")]
struct CliArgs {
#[structopt(
long,
global = true,
default_value = "")]
foo: String,
#[structopt(subcommand)]
cmd: Cmd,
}
#[derive(Debug, StructOpt)]
enum Cmd {
Get,
Set,
}
fn main() {
let args = CliArgs::from_args();
println!("{:?}", args);
}
Обратите внимание, что глобальный аргумент должен быть необязательным или иметь значение по умолчанию.