Combinatoric example

```no_run
#[derive(Debug, Clone)]
pub struct Options {
    argument: u32,
    switch: bool,
}

pub fn options() -> OptionParser<Options> {
    let argument = long("argument")
        .help("important argument")
        .argument("ARG")
        .fallback(30);
    let switch = long("switch").help("secret switch").switch().hide();
    construct!(Options { argument, switch }).to_options()
}

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


Derive example

```no_run
#[derive(Debug, Clone, Bpaf)]
#[bpaf(options)]
pub struct Options {
    /// important argument
    #[bpaf(fallback(30))]
    argument: u32,
    /// secret switch
    #[bpaf(hide)]
    switch: bool,
}

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


Output

`hide`  removes the inner parser from any help or autocompletion logic

$ app --help

Usage: app [--argument=ARG]

Available options:

    --argument=ARG

important argument

-h, --help

Prints help information

But doesn't change the parsing behavior in any way otherwise

$ app --argument 32
Options { argument: 32, switch: false }

$ app --argument 42 --switch
Options { argument: 42, switch: true }

