immargs 0.1.3

No-hassle, on-the-spot, command line argument parser
Documentation
use immargs::Args;
use immargs::args_from;
use immargs::args_from_env;
use immargs::args_try_from;
use immargs::args_try_from_env;

#[test]
fn macro_args_from() {
    let args = args_from! {
        ["test", "-f", "list", "-v", "47"],
        -f --flag,
        <command> Command {
            list ls,
            add,
            remove rm,
        }
    };

    assert!(args.flag);

    match args.command.into_str() {
        ("list", args) => list(args),
        _ => panic!(),
    }

    fn list(args: Args) {
        let args = args_from! {
            args,
            -v --value <num> u64,
        };

        assert!(args.value == Some(47));
    }
}

#[test]
fn macro_args_try_from() {
    let args = args_try_from! {
        ["test", "-f", "list"],
        -f --flag,
        <value> String,
    };

    let args = args.unwrap().unwrap();

    assert!(args.flag);
    assert!(args.value == "list");
}

#[test]
fn macro_args_from_env() {
    let args = args_from_env! {
        -f --flag,
    };

    assert!(!args.flag);
}

#[test]
fn macro_args_try_from_env() {
    let args = args_try_from_env! {
        -f --flag,
    };

    let args = args.unwrap().unwrap();

    assert!(!args.flag);
}