vimwiki-core 0.1.0

Core library elements for vimwiki data structures, parsing, and more
Documentation
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use std::{fs, path::PathBuf, time::Duration};
use vimwiki::{Language, Page};

fn parse_page_benchmark(c: &mut Criterion) {
    let base =
        PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("benches/fixtures");
    let target = PathBuf::from("vimwiki/specification.wiki");
    let path = base.join(target);
    let file_contents =
        fs::read_to_string(path).expect("Failed to load fixture");

    c.bench_with_input(
        BenchmarkId::new("parse page", "specification.wiki"),
        &file_contents,
        |b, s| {
            let language = Language::from_vimwiki_str(&s);
            b.iter(|| language.parse::<Page>().expect("Failed to parse"))
        },
    );
}

criterion_group! {
    name = benches;
    config = Criterion::default().measurement_time(Duration::new(15, 0));
    targets = parse_page_benchmark
}
criterion_main!(benches);