use ap::{App, Arg, Args, Error, Handler, Result, UNKNOWN_OPTION_HANDLER_OPT};
#[derive(Clone, Debug, Default)]
struct MyHandler {}
impl Handler for &mut MyHandler {
fn handle(&mut self, arg: Arg) -> Result<()> {
match arg.option {
'a' | 'e' | 'i' | 'o' | 'u' => Ok(()),
_ => Err(Error::HandlerError(format!(
"option {:?} not a vowel",
arg.option
))),
}
}
}
fn main() -> Result<()> {
let mut my_handler = MyHandler::default();
let mut args = Args::default();
args.add(Arg::new(UNKNOWN_OPTION_HANDLER_OPT));
let mut app = App::default()
.help("some text")
.args(args)
.handler(Box::new(&mut my_handler));
app.parse()
}