#[macro_use] extern crate structopt; #[macro_use] extern crate clap; use structopt::StructOpt; arg_enum! { #[derive(Debug)] enum Baz { Foo, Bar, FooBar } } #[derive(StructOpt, Debug)] struct Opt { /// Important argument. #[structopt(raw(possible_values = "&Baz::variants()", case_insensitive = "true"))] i: Baz, } fn main() { let opt = Opt::from_args(); println!("{:?}", opt); }