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}