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}