nom_bencode 0.2.0

A bencode parser written with nom.
Documentation
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use nom_bencode::*;

static SOURCE_BYTES_22KB: &[u8] = include_bytes!("../test-assets/big-buck-bunny.torrent");
static SOURCE_BYTES_113KB: &[u8] = include_bytes!("../test-assets/private.torrent");
static SOURCE_BYTES_218KB: &[u8] = include_bytes!("../test-assets/multi-file.torrent");

fn parse_source(src: &[u8]) -> Result<Vec<Value>, Err<BencodeError<&[u8]>>> {
    nom_bencode::parse(src)
}

fn criterion_benchmark(c: &mut Criterion) {
    c.bench_function("bencode torrent 22kb", |b| {
        b.iter(|| parse_source(black_box(SOURCE_BYTES_22KB)))
    });
    c.bench_function("bencode torrent 113kb", |b| {
        b.iter(|| parse_source(black_box(SOURCE_BYTES_113KB)))
    });
    c.bench_function("bencode torrent 218kb", |b| {
        b.iter(|| parse_source(black_box(SOURCE_BYTES_218KB)))
    });
}

criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);