//! 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());
}
