aboutsummaryrefslogtreecommitdiff
path: root/clap/examples/13b_enum_values_manual.rs
diff options
context:
space:
mode:
Diffstat (limited to 'clap/examples/13b_enum_values_manual.rs')
-rw-r--r--clap/examples/13b_enum_values_manual.rs54
1 files changed, 0 insertions, 54 deletions
diff --git a/clap/examples/13b_enum_values_manual.rs b/clap/examples/13b_enum_values_manual.rs
deleted file mode 100644
index 81ffe5e..0000000
--- a/clap/examples/13b_enum_values_manual.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-// In the following example we will create an enum with 4 values, assign a positional argument
-// that accepts only one of those values, and use clap to parse the argument.
-//
-// Start with bringing the trait into scope.
-use std::str::FromStr;
-
-// Add clap like normal
-#[macro_use]
-extern crate clap;
-
-use clap::{App, Arg};
-
-// Define your enum
-enum Vals {
- Foo,
- Bar,
- Baz,
- Qux
-}
-
-// Implement the trait
-impl FromStr for Vals {
- type Err = &'static str;
-
- fn from_str(s: &str) -> Result<Self, Self::Err> {
- match s {
- "Foo" => Ok(Vals::Foo),
- "Bar" => Ok(Vals::Bar),
- "Baz" => Ok(Vals::Baz),
- "Qux" => Ok(Vals::Qux),
- _ => Err("no match")
- }
- }
-}
-
-fn main() {
- // Create the application like normal
- let m = App::new("myapp")
- // Use a single positional argument that is required
- .arg(Arg::from_usage("<type> 'The type to use'")
- // Define the list of possible values
- .possible_values(&["Foo", "Bar", "Baz", "Qux"]))
- .get_matches();
-
- let t = value_t!(m, "type", Vals).unwrap_or_else(|e| e.exit());
-
- // Now we can use our enum like normal.
- match t {
- Vals::Foo => println!("Found a Foo"),
- Vals::Bar => println!("Found a Bar"),
- Vals::Baz => println!("Found a Baz"),
- Vals::Qux => println!("Found a Qux")
- }
-}