1 //! A somewhat comprehensive example of a typical `StructOpt` usage.use
2 
3 use std::path::PathBuf;
4 use structopt::StructOpt;
5 
6 /// A basic example
7 #[derive(StructOpt, Debug)]
8 #[structopt(name = "basic")]
9 struct Opt {
10     // A flag, true if used in the command line. Note doc comment will
11     // be used for the help message of the flag. The name of the
12     // argument will be, by default, based on the name of the field.
13     /// Activate debug mode
14     #[structopt(short, long)]
15     debug: bool,
16 
17     // The number of occurrences of the `v/verbose` flag
18     /// Verbose mode (-v, -vv, -vvv, etc.)
19     #[structopt(short, long, parse(from_occurrences))]
20     verbose: u8,
21 
22     /// Set speed
23     #[structopt(short, long, default_value = "42")]
24     speed: f64,
25 
26     /// Output file
27     #[structopt(short, long, parse(from_os_str))]
28     output: PathBuf,
29 
30     // the long option will be translated by default to kebab case,
31     // i.e. `--nb-cars`.
32     /// Number of cars
33     #[structopt(short = "c", long)]
34     nb_cars: Option<i32>,
35 
36     /// admin_level to consider
37     #[structopt(short, long)]
38     level: Vec<String>,
39 
40     /// Files to process
41     #[structopt(name = "FILE", parse(from_os_str))]
42     files: Vec<PathBuf>,
43 }
44 
main()45 fn main() {
46     let opt = Opt::from_args();
47     println!("{:#?}", opt);
48 }
49