diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2024-03-07 15:06:29 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2024-03-07 15:06:29 +0900 |
commit | 567c3806adaa2f39953c1a9ac32df340eb93fc3a (patch) | |
tree | 08a3506515ad25904958215b74fd23471b693300 /examples/derive_ref/augment_args.rs | |
download | rust-clap-v3-567c3806adaa2f39953c1a9ac32df340eb93fc3a.tar.gz rust-clap-v3-567c3806adaa2f39953c1a9ac32df340eb93fc3a.tar.bz2 rust-clap-v3-567c3806adaa2f39953c1a9ac32df340eb93fc3a.zip |
Import clap 3.2.22upstream/3.2.22upstream
Diffstat (limited to 'examples/derive_ref/augment_args.rs')
-rw-r--r-- | examples/derive_ref/augment_args.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/examples/derive_ref/augment_args.rs b/examples/derive_ref/augment_args.rs new file mode 100644 index 0000000..3105569 --- /dev/null +++ b/examples/derive_ref/augment_args.rs @@ -0,0 +1,27 @@ +use clap::{arg, Args, Command, FromArgMatches as _}; + +#[derive(Args, Debug)] +struct DerivedArgs { + #[clap(short, long, action)] + derived: bool, +} + +fn main() { + let cli = Command::new("CLI").arg(arg!(-b - -built).action(clap::ArgAction::SetTrue)); + // Augment built args with derived args + let cli = DerivedArgs::augment_args(cli); + + let matches = cli.get_matches(); + println!("Value of built: {:?}", matches.get_flag("built")); + println!( + "Value of derived via ArgMatches: {:?}", + matches.get_flag("derived") + ); + + // Since DerivedArgs implements FromArgMatches, we can extract it from the unstructured ArgMatches. + // This is the main benefit of using derived arguments. + let derived_matches = DerivedArgs::from_arg_matches(&matches) + .map_err(|err| err.exit()) + .unwrap(); + println!("Value of derived: {:#?}", derived_matches); +} |