05_overload/
05_overload.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>())?;
7    parser.add_opt("-flag".infer::<String>())?;
8    parser.add_opt("-flag".infer::<bool>())?;
9
10    // enable combination style
11    parser.set_overload(true);
12    parser
13        .parse(Args::from(
14            ["app", "-flag=foo", "-flag=42", "-flag"].into_iter(),
15        ))?
16        .ok()?;
17
18    assert_eq!(parser.find("-flag".infer::<i32>())?.val::<i32>()?, &42);
19    assert_eq!(
20        parser.find("-flag".infer::<String>())?.val::<String>()?,
21        "foo"
22    );
23    assert_eq!(parser.find("-flag".infer::<bool>())?.val::<bool>()?, &true);
24
25    Ok(())
26}