mirror of
https://github.com/clap-rs/clap
synced 2025-01-21 09:03:53 +00:00
9e38353442
We aren't enumerating arguments but values for an argument, so the name should reflect that. This will be important as part of #1807 when we have more specific attribute names.
32 lines
761 B
Rust
32 lines
761 B
Rust
// Note: this requires the `cargo` feature
|
|
|
|
use clap::{arg, command, value_parser, ValueEnum};
|
|
|
|
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
|
|
enum Mode {
|
|
Fast,
|
|
Slow,
|
|
}
|
|
|
|
fn main() {
|
|
let matches = command!()
|
|
.arg(
|
|
arg!(<MODE>)
|
|
.help("What mode to run the program in")
|
|
.value_parser(value_parser!(Mode)),
|
|
)
|
|
.get_matches();
|
|
|
|
// Note, it's safe to call unwrap() because the arg is required
|
|
match matches
|
|
.get_one::<Mode>("MODE")
|
|
.expect("'MODE' is required and parsing will fail if its missing")
|
|
{
|
|
Mode::Fast => {
|
|
println!("Hare");
|
|
}
|
|
Mode::Slow => {
|
|
println!("Tortoise");
|
|
}
|
|
}
|
|
}
|