arkham/benches/arg_parsing.rs

43 lines
1.2 KiB
Rust
Raw Normal View History

2021-06-19 07:20:29 +00:00
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);