aboutsummaryrefslogtreecommitdiff
path: root/structopt/examples/true_or_false.rs
diff options
context:
space:
mode:
Diffstat (limited to 'structopt/examples/true_or_false.rs')
-rw-r--r--structopt/examples/true_or_false.rs41
1 files changed, 0 insertions, 41 deletions
diff --git a/structopt/examples/true_or_false.rs b/structopt/examples/true_or_false.rs
deleted file mode 100644
index 31a543e..0000000
--- a/structopt/examples/true_or_false.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-//! How to parse `--foo=true --bar=false` and turn them into bool.
-
-use structopt::StructOpt;
-
-fn true_or_false(s: &str) -> Result<bool, &'static str> {
- match s {
- "true" => Ok(true),
- "false" => Ok(false),
- _ => Err("expected `true` or `false`"),
- }
-}
-
-#[derive(StructOpt, Debug, PartialEq)]
-struct Opt {
- // Default parser for `try_from_str` is FromStr::from_str.
- // `impl FromStr for bool` parses `true` or `false` so this
- // works as expected.
- #[structopt(long, parse(try_from_str))]
- foo: bool,
-
- // Of course, this could be done with an explicit parser function.
- #[structopt(long, parse(try_from_str = true_or_false))]
- bar: bool,
-
- // `bool` can be positional only with explicit `parse(...)` annotation
- #[structopt(long, parse(try_from_str))]
- boom: bool,
-}
-
-fn main() {
- assert_eq!(
- Opt::from_iter(&["test", "--foo=true", "--bar=false", "true"]),
- Opt {
- foo: true,
- bar: false,
- boom: true
- }
- );
- // no beauty, only truth and falseness
- assert!(Opt::from_iter_safe(&["test", "--foo=beauty"]).is_err());
-}