1 use clap::{arg, command, value_parser, ArgAction}; 2 main()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