04_positional/04_positional.rs
1use aopt::prelude::*;
2
3pub fn main() -> Result<(), aopt::Error> {
4 let mut parser = AFwdParser::default();
5
6 parser.add_opt("--flag=b")?;
7 parser.add_opt("--foo=s")?;
8 // In default, positional has bool value
9 parser.add_opt("first=p@1")?;
10 // A special positional argument match the name, and force required
11 parser.add_opt("list=c")?;
12 // Add a positional argument has String value
13 parser.add_opt("second@2".infer::<Pos<String>>())?;
14
15 // enable combination style
16 parser.enable_combined();
17 parser
18 .parse(Args::from(
19 ["app", "list", "--foo", "value", "bar"].into_iter(),
20 ))?
21 .ok()?;
22
23 assert_eq!(parser.find_val::<bool>("list")?, &true);
24 assert_eq!(parser.find_val::<bool>("first")?, &true);
25 assert_eq!(parser.find_val::<String>("second")?, "bar");
26
27 Ok(())
28}