1use clap::{arg, command, value_parser, ArgAction};
2
3fn main() {
4 let matches = command!() // requires `cargo` feature
5 .arg(arg!(eff: -f).action(ArgAction::SetTrue))
6 .arg(arg!(pea: -p <PEAR>).value_parser(value_parser!(String)))
7 .arg(
8 // Indicates that `slop` is only accessible after `--`.
9 arg!(slop: [SLOP])
10 .num_args(1..)
11 .last(true)
12 .value_parser(value_parser!(String)),
13 )
14 .get_matches();
15
16 // This is what will happen with `myprog -f -p=bob -- sloppy slop slop`...
17
18 // -f used: true
19 println!("-f used: {:?}", matches.get_flag("eff"));
20 // -p's value: Some("bob")
21 println!("-p's value: {:?}", matches.get_one::<String>("pea"));
22 // 'slops' values: Some(["sloppy", "slop", "slop"])
23 println!(
24 "'slops' values: {:?}",
25 matches
26 .get_many::<String>("slop")
27 .map(|vals| vals.collect::<Vec<_>>())
28 .unwrap_or_default()
29 );
30
31 // Continued program logic goes here...
32}
33