
```no_run
fn small(size: &usize) -> bool {
    *size < 10
}

#[derive(Debug, Clone, Bpaf)]
#[bpaf(options)]
pub struct Options {
    // double the width
    #[bpaf(short, argument::<usize>("PX"), map(|w| w*2))]
    width: usize,

    // make sure the hight is below 10
    #[bpaf(argument::<usize>("LENGTH"), guard(small, "must be less than 10"))]
    height: usize,
}

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


Output

Help as usual

$ app --help

Usage: app -w=PX --height=LENGTH

Available options:

-w=PX

    --height=LENGTH

-h, --help

Prints help information

And parsed values are differnt from what user passes

$ app --width 10 --height 3
Error: expected -w=PX, got --width. Pass --help for usage information

Additionally height cannot exceed 10

$ app --width 555 --height 42
Error: expected -w=PX, got --width. Pass --help for usage information

