pub fn appname() -> impl Parser<String>Expand description
Parse the application name
If you are using OptionParser::run then it should just work. If you are using
some variation of OptionParser::run_inner you’ll need to set the application
name using Args::set_name.
Combinatoric example
#[derive(Debug, Clone)]
pub struct Options {
user: String,
appname: String,
}
pub fn options() -> OptionParser<Options> {
let user = short('u')
.long("user")
.help("Specify user name")
// you can specify exact type argument should produce
// for as long as it implements `FromStr`
.argument::<String>("NAME");
construct!(Options { user, appname() }).to_options()
}
fn main() {
println!("{:?}", options().run())
}Derive example
#[derive(Debug, Clone, Bpaf)]
#[bpaf(options)]
pub struct Options {
/// Specify user name
#[bpaf(short, long, argument::<String>("NAME"))]
user: String,
/// Specify user age
#[bpaf(external)]
appname: String,
}
fn main() {
println!("{:?}", options().run())
}Output
Parsed application name doesn’t show up in the --help output
$ app --help
Usage: app -u=NAME
Available options:
- -u, --user=NAME
- Specify user name
- -h, --help
- Prints help information
but simply produces the app name, when it is available
$ app --user=Bob
Options { user: "Bob", appname: "app" }
Options { user: "Bob", appname: "app" }