logo
pub trait FromArgMatches: Sized {
    fn from_arg_matches(matches: &ArgMatches) -> Result<Self, Error>;
    fn update_from_arg_matches(
        &mut self,
        matches: &ArgMatches
    ) -> Result<(), Error>; fn from_arg_matches_mut(matches: &mut ArgMatches) -> Result<Self, Error> { ... } fn update_from_arg_matches_mut(
        &mut self,
        matches: &mut ArgMatches
    ) -> Result<(), Error> { ... } }
Expand description

Converts an instance of ArgMatches to a user-defined container.

Derived as part of Parser, Args, and Subcommand.

Required Methods

Instantiate Self from ArgMatches, parsing the arguments as needed.

Motivation: If our application had two CLI options, --name <STRING> and the flag --debug, we may create a struct as follows:

struct Context {
   name: String,
   debug: bool
}

We then need to convert the ArgMatches that clap generated into our struct. from_arg_matches serves as the equivalent of:

impl From<ArgMatches> for Context {
  fn from(m: ArgMatches) -> Self {
      Context {
          name: m.get_one::<String>("name").unwrap().clone(),
          debug: *m.get_one::<bool>("debug").expect("defaulted by clap"),
      }
  }
}

Assign values from ArgMatches to self.

Provided Methods

Instantiate Self from ArgMatches, parsing the arguments as needed.

Motivation: If our application had two CLI options, --name <STRING> and the flag --debug, we may create a struct as follows:

struct Context {
   name: String,
   debug: bool
}

We then need to convert the ArgMatches that clap generated into our struct. from_arg_matches_mut serves as the equivalent of:

impl From<ArgMatches> for Context {
  fn from(m: ArgMatches) -> Self {
      Context {
          name: m.get_one::<String>("name").unwrap().to_string(),
          debug: *m.get_one::<bool>("debug").expect("defaulted by clap"),
      }
  }
}
Examples found in repository?
examples/derive_ref/flatten_hand_args.rs (line 14)
12
13
14
15
    fn from_arg_matches(matches: &ArgMatches) -> Result<Self, Error> {
        let mut matches = matches.clone();
        Self::from_arg_matches_mut(&mut matches)
    }

Assign values from ArgMatches to self.

Examples found in repository?
examples/derive_ref/flatten_hand_args.rs (line 25)
23
24
25
26
    fn update_from_arg_matches(&mut self, matches: &ArgMatches) -> Result<(), Error> {
        let mut matches = matches.clone();
        self.update_from_arg_matches_mut(&mut matches)
    }

Implementations on Foreign Types

Implementors