pub trait Parser:
    Sized
    + FromArgMatches
    + CommandFactory {
    // Provided methods
    fn parse() -> Self { ... }
    fn try_parse() -> Result<Self, Error> { ... }
    fn parse_from<I, T>(itr: I) -> Self
       where I: IntoIterator<Item = T>,
             T: Into<OsString> + Clone { ... }
    fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
       where I: IntoIterator<Item = T>,
             T: Into<OsString> + Clone { ... }
    fn update_from<I, T>(&mut self, itr: I)
       where I: IntoIterator<Item = T>,
             T: Into<OsString> + Clone { ... }
    fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
       where I: IntoIterator<Item = T>,
             T: Into<OsString> + Clone { ... }
}Expand description
Parse command-line arguments into Self.
The primary one-stop-shop trait used to create an instance of a clap
Command, conduct the parsing, and turn the resulting ArgMatches back
into concrete instance of the user struct.
This trait is primarily a convenience on top of FromArgMatches +
CommandFactory which uses those two underlying traits to build the two
fundamental functions parse which uses the std::env::args_os iterator,
and parse_from which allows the consumer to supply the iterator (along
with fallible options for each).
See also Subcommand and Args.
See the derive reference for attributes and best practices.
NOTE: Deriving requires the [derive feature flag][crate::_features]
§Examples
The following example creates a Context struct that would be used
throughout the application representing the normalized values coming from
the CLI.
/// My super CLI
#[derive(clap::Parser)]
#[clap(name = "demo")]
struct Context {
   /// More verbose output
   #[clap(long)]
   verbose: bool,
   /// An optional name
   #[clap(short, long)]
   name: Option<String>,
}The equivalent Command struct + From implementation:
Command::new("demo")
    .about("My super CLI")
    .arg(Arg::new("verbose")
        .long("verbose")
        .action(ArgAction::SetTrue)
        .help("More verbose output"))
    .arg(Arg::new("name")
        .long("name")
        .short('n')
        .help("An optional name")
        .takes_value(true));
struct Context {
    verbose: bool,
    name: Option<String>,
}
impl From<ArgMatches> for Context {
    fn from(m: ArgMatches) -> Self {
        Context {
            verbose: *m.get_one::<bool>("verbose").expect("defaulted_by_clap"),
            name: m.get_one::<String>("name").cloned(),
        }
    }
}Provided Methods§
Sourcefn parse_from<I, T>(itr: I) -> Self
 
fn parse_from<I, T>(itr: I) -> Self
Parse from iterator, exit on error
Sourcefn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
 
fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
Parse from iterator, return Err on error.
Sourcefn update_from<I, T>(&mut self, itr: I)
 
fn update_from<I, T>(&mut self, itr: I)
Update from iterator, exit on error
Sourcefn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
 
fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
Update from iterator, return Err on error.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.