
```no_run
use bpaf::*;

#[derive(Debug, Clone, Bpaf)]
#[bpaf(options)]
pub struct Options {
    /// Specify user name
    name: String,

    /// Specify user age
    age: usize,
}

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


Output

$ app --help

Usage: app --name=ARG --age=ARG

Available options:

    --name=ARG

Specify user name

    --age=ARG

Specify user age

-h, --help

Prints help information

`--help` shows arguments as a short name with attached metavariable

Value can be separated from flag by space, `=` sign

$ app --name Bob --age 12
Options { name: "Bob", age: 12 }

$ app --name "Bob" --age=12
Options { name: "Bob", age: 12 }

$ app --name=Bob
Error: expected --age=ARG, pass --help for usage information

$ app --name="Bob"
Error: expected --age=ARG, pass --help for usage information

Or in case of short name - be directly adjacent to it

$ app -nBob
Error: expected --name=ARG, got -nBob. Pass --help for usage information

For long names - this doesn't work since parser can't tell where name
stops and argument begins:

$ app --age12
Error: no such flag: --age12, did you mean --age?

Either way - value is required, passing just the argument name results in parse failure

$ app --name
Error: --name requires an argument ARG

