mexset 0.1.0

Implementing a set with MEX support
Documentation
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use mexset::MexSet;

fn basics_u128() {
    let mut set: MexSet<u128> = MexSet::new();
    for x in 0..10000 {
        set.insert(x);
        set.minimum_excluded();
    }

    for x in 0..10000 {
        set.remove(&x);
        set.minimum_excluded();
    }
}

fn basics_u64() {
    let mut set: MexSet<u64> = MexSet::new();
    for x in 0..10000 {
        set.insert(x);
        set.minimum_excluded();
    }

    for x in 0..10000 {
        set.remove(&x);
        set.minimum_excluded();
    }
}

fn basics_u32() {
    let mut set: MexSet<u32> = MexSet::new();
    for x in 0..10000 {
        set.insert(x);
        set.minimum_excluded();
    }

    for x in 0..10000 {
        set.remove(&x);
        set.minimum_excluded();
    }
}

fn basics_u16() {
    let mut set: MexSet<u16> = MexSet::new();
    for x in 0..10000 {
        set.insert(x);
        set.minimum_excluded();
    }

    for x in 0..10000 {
        set.remove(&x);
        set.minimum_excluded();
    }
}

fn with_range_u128() {
    MexSet::<u128>::with_range(10000);
}

pub fn criterion_benchmark(c: &mut Criterion) {
    c.bench_function("basics u128", |b| b.iter(|| black_box(basics_u128())));
    c.bench_function("basics u64", |b| b.iter(|| black_box(basics_u64())));
    c.bench_function("basics u32", |b| b.iter(|| black_box(basics_u32())));
    c.bench_function("basics u16", |b| b.iter(|| black_box(basics_u16())));
    c.bench_function("with_range_u128", |b| b.iter(|| black_box(with_range_u128())));
}

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