43 lines
1.2 KiB
Rust
43 lines
1.2 KiB
Rust
|
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);
|