
```no_run
use bpaf::*;

pub fn options() -> OptionParser<f64> {
    let miles = long("miles").help("Distance in miles").argument("MI");
    let km = long("kilo").help("Distance in kilometers").argument("KM");
    construct!([miles, km]).to_options()
}

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


Output

Help message describes all the parser combined

$ app --help

Usage: app (--miles=MI | --kilo=KM)

Available options:

    --miles=MI

Distance in miles

    --kilo=KM

Distance in kilometers

-h, --help

Prints help information

Users can pass value that satisfy either parser

$ app --miles 42
42.0

$ app --kilo 15
15.0

But not both at once or not at all:

$ app --miles 53 --kilo 10
Error: --kilo cannot be used at the same time as --miles

$ app 
Error: expected --miles=MI or --kilo=KM, pass --help for usage information

If those cases are valid you can handle them with `optional` and `many`

