// Note: this requires the `cargo` feature use clap::{arg, command, value_parser}; fn main() { let matches = command!() .arg(arg!(eff: -f)) .arg( arg!(pea: -p ) .required(false) .value_parser(value_parser!(String)), ) .arg( // Indicates that `slop` is only accessible after `--`. arg!(slop: [SLOP]) .multiple_occurrences(true) .last(true) .value_parser(value_parser!(String)), ) .get_matches(); // This is what will happen with `myprog -f -p=bob -- sloppy slop slop`... // -f used: true println!("-f used: {:?}", matches.is_present("eff")); // -p's value: Some("bob") println!("-p's value: {:?}", matches.get_one::("pea")); // 'slops' values: Some(["sloppy", "slop", "slop"]) println!( "'slops' values: {:?}", matches .get_many::("slop") .map(|vals| vals.collect::>()) .unwrap_or_default() ); // Continued program logic goes here... }