1 use structopt::StructOpt;
2 use strum::{EnumString, EnumVariantNames, VariantNames};
3 
4 const DEFAULT: &str = "txt";
5 
6 #[derive(StructOpt, Debug)]
7 struct Opt {
8     #[structopt(
9         long,
10         possible_values = Format::VARIANTS,
11         case_insensitive = true,
12         default_value = DEFAULT,
13     )]
14     format: Format,
15 }
16 
17 #[derive(EnumString, EnumVariantNames, Debug)]
18 #[strum(serialize_all = "kebab_case")]
19 enum Format {
20     Txt,
21     Md,
22     Html,
23 }
24 
main()25 fn main() {
26     println!("{:?}", Opt::from_args());
27 }
28