mo 0.1.0

Create dozens/hundreds/thousands/millions of random examples based on a pest grammar (PEG). It can be used for generate string/structured data for training models in AI, or like a grammar fuzzer for find bugs.
Documentation
use mo::config::GeneratorConfig;
use mo::parallel_generate_examples;
use criterion::{black_box, criterion_group, criterion_main, Criterion};

fn basic_benchmark(c: &mut Criterion) {
    let config: GeneratorConfig = GeneratorConfig::benchmark();
    let grammar = r#"
            // I like Rust!
            language = {"Rust" | "Python" | "Go" | "Java" | "PHP" | "Haskell"}
            one = {"1"}
            daysNumber = {one ~ " day" | !one ~ ASCII_NONZERO_DIGIT ~ " days"}
            sentence = {"I have been programming in " ~ language ~ " for " ~ daysNumber ~ "."}
        "#;

    c.bench_function("Readme grammar example", |b| {
        b.iter(|| {
            parallel_generate_examples(
                black_box(grammar.to_string()),
                black_box(100),
                black_box("sentence".to_string()),
                black_box(&config),
                black_box(false),
                black_box(true),
            )
        })
    });
}

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