Struct clap::ArgMatches
[−]
[src]
pub struct ArgMatches<'n, 'a> { // some fields omitted }
Used to get information about the arguments that where supplied to the program at runtime by
the user. To get a new instance of this struct you use .get_matches()
of the App
struct.
Example
let matches = App::new("MyApp") // adding of arguments and configuration goes here... .get_matches(); // if you had an argument named "output" that takes a value if let Some(o) = matches.value_of("output") { println!("Value for output: {}", o); } // If you have a required argument you can call .unwrap() because the program will exit long // before this point if the user didn't specify it at runtime. println!("Config file: {}", matches.value_of("config").unwrap()); // You can check the presence of an argument if matches.is_present("debug") { // Another way to check if an argument was present, or if it occurred multiple times is to // use occurrences_of() which returns 0 if an argument isn't found at runtime, or the // number of times that it occurred, if it was. To allow an argument to appear more than // once, you must use the .multiple(true) method, otherwise it will only return 1 or 0. if matches.occurrences_of("debug") > 2 { println!("Debug mode is REALLY on"); } else { println!("Debug mode kind of on"); } } // You can get the sub-matches of a particular subcommand (in this case "test") // If "test" had it's own "-l" flag you could check for it's presence accordingly if let Some(ref matches) = matches.subcommand_matches("test") { if matches.is_present("list") { println!("Printing testing lists..."); } else { println!("Not printing testing lists..."); } }
Methods
impl<'n, 'a> ArgMatches<'n, 'a>
fn value_of<'na>(&self, name: &'na str) -> Option<&str>
Gets the value of a specific option or positional argument (i.e. an argument that takes
an additional value at runtime). If the option wasn't present at runtime
it returns None
.
NOTE: If getting a value for an option or positional argument that allows multiples,
prefer values_of()
as value_of()
will only return the first value.
Example
if let Some(o) = matches.value_of("output") { println!("Value for output: {}", o); }
fn values_of<'na>(&'a self, name: &'na str) -> Option<Vec<&'a str>>
Gets the values of a specific option or positional argument in a vector (i.e. an argument
that takes multiple values at runtime). If the option wasn't present at runtime it
returns None
Example
// If the program had option "-c" that took a value and was run // via "myapp -o some -o other -o file" // values_of() would return a [&str; 3] ("some", "other", "file") if let Some(os) = matches.values_of("output") { for o in os { println!("A value for output: {}", o); } }
fn is_present<'na>(&self, name: &'na str) -> bool
Returns if an argument was present at runtime.
Example
if matches.is_present("output") { println!("The output argument was used!"); }
fn occurrences_of<'na>(&self, name: &'na str) -> u8
Returns the number of occurrences of an option, flag, or positional argument at runtime.
If an argument isn't present it will return 0
. Can be used on arguments which don't
allow multiple occurrences, but will obviously only return 0
or 1
.
Example
if matches.occurrences_of("debug") > 1 { println!("Debug mode is REALLY on"); } else { println!("Debug mode kind of on"); }
fn subcommand_matches<'na>(&self, name: &'na str) -> Option<&ArgMatches>
Returns the ArgMatches
for a particular subcommand or None if the subcommand wasn't
present at runtime.
Example
if let Some(matches) = app_matches.subcommand_matches("test") { // Use matches as normal }
fn subcommand_name(&self) -> Option<&str>
Returns the name of the subcommand used of the parent App
, or None
if one wasn't found
NOTE: Only a single subcommand may be present per App
at runtime, does NOT check for
the name of sub-subcommand's names
Example
match app_matches.subcommand_name() { Some("test") => {}, // test was used Some("config") => {}, // config was used _ => {}, // Either no subcommand or one not tested for... }
fn subcommand(&self) -> (&str, Option<&ArgMatches>)
Returns the name and ArgMatches
of the subcommand used at runtime or ("", None) if one
wasn't found.
Example
match app_matches.subcommand() { ("test", Some(matches)) => {}, // test was used ("config", Some(matches)) => {}, // config was used _ => {}, // Either no subcommand or one not tested for... }
fn usage(&self) -> &str
Returns a string slice of the usage statement for the App
(or SubCommand
)
Example
println!("{}",app_matches.usage());