use arkham::{App, Command, Opt, OptKind}; use criterion::{criterion_group, criterion_main, Criterion}; fn parse_args(c: &mut Criterion) { c.bench_function("parse_args", |b| { let args = vec![ "--user".into(), "joe".into(), "--config".into(), "c.json".into(), "thing".into(), ]; let app = App::new() .opt(Opt { name: "user".into(), short: "u".into(), long: "user".into(), kind: OptKind::String, }) .command( Command::new("thing") .opt(Opt { name: "config".into(), short: "c".into(), long: "config".into(), kind: OptKind::String, }) .handler(|_, ctx, _| { assert_eq!(ctx.get_string("user"), Some("joe".into())); assert_eq!(ctx.get_string("config"), Some("c.json".into())); }), ); b.iter(|| { let _ = app.run_with(args.clone()); }) }); } criterion_group!(benches, parse_args,); criterion_main!(benches);