
```no_run
use bpaf::*;

pub fn options() -> OptionParser<usize> {
    short('s')
        .long("size")
        .help("Defines size of an object")
        .argument::<usize>("SIZE")
        .to_options()
}

fn main() {
    println!("{:?}", options().run())
}
```


Output

By default all arguments are required so running with no arguments produces an error

$ app 
Error: expected --size=SIZE, pass --help for usage information

Bpaf accepts various combinations of names and adjacencies:

$ app -s100
100

$ app --size 300
300

$ app -s=42
42

$ app --size=14
14

Since not every string is a valid number - bpaf would report any parsing failures to the user
directly

$ app --size fifty
Error: couldn't parse fifty: invalid digit found in string

In addition to the switch you defined `bpaf` generates switch for user help which will include
the description from the `help` method

$ app --help

Usage: app -s=SIZE

Available options:

-s, --size=SIZE

Defines size of an object

-h, --help

Prints help information

