
```no_run
#[derive(Debug, Clone)]
pub struct Options {
    release: bool,
    binary: String,
}

pub fn options() -> OptionParser<Options> {
    let release = short('r')
        .long("release")
        .help("Perform actions in release mode")
        .switch();

    let binary = short('b')
        .long("binary")
        .help("Use this binary")
        .argument("BIN");

    construct!(Options { release, binary })
        .to_options()
        .with_usage(|u| {
            let mut doc = Doc::default();
            doc.emphasis("Usage: ");
            doc.literal("my_program");
            doc.text(" ");
            doc.doc(&u);
            doc
        })
}

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


Output

`with_usage` lets you to place some custom text around generated usage line

$ app --help

Usage: my_program [-r] -b=BIN

Available options:

-r, --release

Perform actions in release mode

-b, --binary=BIN

Use this binary

-h, --help

Prints help information

It doesn't alter parser's behavior otherwise

$ app 
Error: expected --binary=BIN, pass --help for usage information

$ app -r --binary test
Options { release: true, binary: "test" }

