use std::num::NonZeroU32;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use imap_codec::{
encode::Encoder,
imap_types::response::{Code, Response, Status},
ResponseCodec,
};
fn criterion_benchmark(c: &mut Criterion) {
let rsp = Response::Status(
Status::ok(
Some("ABC1234567".try_into().unwrap()),
Some(Code::Unseen(NonZeroU32::new(12345).unwrap())),
"xyz...",
)
.unwrap(),
);
let mut out = Vec::with_capacity(512);
c.bench_function("serialize_response", |b| {
b.iter(|| {
let tmp = ResponseCodec::default().encode(&rsp).dump();
out.extend_from_slice(black_box(&tmp));
out.clear();
})
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);