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}