us
}
-pub fn run_ap_completer<T,U>(parsed: T, us: String, apmaker: ApMaker<T>,
- completer: ApCompleter<T,U>)
- -> U where T: Default
+pub fn argparse_more<T,U,F>(us: String, apmaker: ApMaker<T>, f: F) -> U
+ where T: Default,
+ F: FnOnce() -> Result<U, ArgumentParseError>
{
- completer(parsed).unwrap_or_else(|e| e.report(&us,apmaker))
+ f().unwrap_or_else(|e| e.report(&us,apmaker))
}
pub fn parse_args<T:Default,U>(
) -> U {
let mut parsed = default();
let us = run_argparse(&mut parsed, apmaker, args, extra_help);
- let completed = run_ap_completer(parsed, us, apmaker, completer);
+ let completed = argparse_more(us, apmaker, || completer(parsed));
completed
}
let us = run_argparse(&mut parsed, apmaker, args.clone(), Some(extra_help));
- let completed = run_ap_completer(parsed, us, apmaker, &ap_completer);
+ let completed = argparse_more(us, apmaker, || ap_completer(parsed));
let (subcommand, subargs, mo) = completed;
let stdout = CookedStdout::new();