06_callback/06_callback.rs
1use aopt::prelude::*;
2
3pub fn main() -> Result<(), aopt::Error> {
4 let mut parser = AFwdParser::default();
5
6 parser.add_opt("-flag".infer::<i32>())?.on(|_, _| {
7 println!("ignore the value set from command line");
8 Ok(Some(42))
9 })?;
10 parser
11 .add_opt("--/flag".infer::<bool>())?
12 .set_value(true)
13 .on(|_, ctx| Ok(Some(!ctx.value::<bool>()?)))?;
14
15 parser
16 .parse(Args::from(["app", "-flag=foo", "--/flag"].into_iter()))?
17 .ok()?;
18
19 assert_eq!(parser.find_val::<i32>("-flag")?, &42);
20 assert_eq!(parser.find_val::<bool>("--/flag")?, &false);
21
22 Ok(())
23}