browserslist-rs 0.14.0

Rust-ported Browserslist.
Documentation
use browserslist::{resolve, Opts};
use criterion::{black_box, criterion_group, criterion_main, Criterion};

pub fn resolve_defaults_not_dead(c: &mut Criterion) {
    c.bench_function("resolve 'defaults, not dead'", |b| {
        b.iter(|| {
            resolve(
                black_box(vec!["defaults, not dead"]),
                &black_box(Opts::new()),
            )
        })
    });
}

pub fn resolve_usage(c: &mut Criterion) {
    c.bench_function("resolve '> 0.5%'", |b| {
        b.iter(|| resolve(black_box(vec!["> 0.5%"]), &black_box(Opts::new())))
    });
}

pub fn resolve_cover(c: &mut Criterion) {
    c.bench_function("resolve 'cover 99%'", |b| {
        b.iter(|| resolve(black_box(vec!["cover 99%"]), &black_box(Opts::new())))
    });
}

pub fn resolve_electron(c: &mut Criterion) {
    c.bench_function("resolve 'electron >= 10'", |b| {
        b.iter(|| resolve(black_box(vec!["electron >= 10"]), &black_box(Opts::new())))
    });
}

pub fn resolve_node(c: &mut Criterion) {
    c.bench_function("resolve 'node >= 8'", |b| {
        b.iter(|| resolve(black_box(vec!["node >= 8"]), &black_box(Opts::new())))
    });
}

pub fn resolve_browser_features(c: &mut Criterion) {
    c.bench_function("resolve 'supports es6-module'", |b| {
        b.iter(|| {
            resolve(
                black_box(vec!["supports es6-module"]),
                &black_box(Opts::new()),
            )
        })
    });
}

criterion_group!(
    benches,
    resolve_defaults_not_dead,
    resolve_usage,
    resolve_cover,
    resolve_electron,
    resolve_node,
    resolve_browser_features
);
criterion_main!(benches);