macro_rules! clap_dispatch {
($matches:expr; { $( $name:ident $match_arm_args:tt => $callback:expr ),* }) => { ... };
(MATCH_ARM_ARGS, $matches:ident, ( $matches_name:pat, $($arg_name:ident as $varname:ident),* )) => { ... };
(MATCH_ARM_ARGS, $matches:ident, ( $matches_name:pat )) => { ... };
(MATCH_ARM_ARGS, $matches:ident, ()) => { ... };
}Expand description
Process a clap::ArgMatches with pattern-matching-like syntax.
use self::clap::*;
let matches = App::new("test")
.subcommand(SubCommand::with_name("sub")
.subcommand(SubCommand::with_name("subsub")
.arg(Arg::with_name("TEST_ARG").index(1))))
.subcommand(SubCommand::with_name("othersub"))
.get_matches_from(vec!["test", "sub", "subsub", "fooarg"]);
let mut called = false;
clap_dispatch!(matches; {
sub(sub_matches) => clap_dispatch!(sub_matches; {
subsub(_, TEST_ARG as test_arg) => {
assert_eq!(test_arg, "fooarg");
called = true;
}
}),
othersub() => { panic!("Should not have been called."); }
});
assert!(called);