diff options
Diffstat (limited to 'structopt/examples/true_or_false.rs')
-rw-r--r-- | structopt/examples/true_or_false.rs | 41 |
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()); -} |