aopt 1.4.4

A flexible and typed getopt tools
Documentation
use aopt::prelude::*;

pub fn main() -> Result<(), aopt::Error> {
    let mut parser = AFwdParser::default();

    parser.add_opt("-flag".infer::<i32>())?.on(|_, _| {
        println!("ignore the value set from command line");
        Ok(Some(42))
    })?;
    parser
        .add_opt("--/flag".infer::<bool>())?
        .set_value(true)
        .on(|_, ctx| Ok(Some(!ctx.value::<bool>()?)))?;

    parser
        .parse(Args::from(["app", "-flag=foo", "--/flag"].into_iter()))?
        .ok()?;

    assert_eq!(parser.find_val::<i32>("-flag")?, &42);
    assert_eq!(parser.find_val::<bool>("--/flag")?, &false);

    Ok(())
}