fst_incremental 1.0.2

A thread-safe, updatable finite state set: dynamic insertions, deletions and queries over an immutable fst::Set fronted by a compact mutation buffer with amortized rebuilds.
Documentation
mod common;

use common::{keys, persisted_bytes, rng, BATCH, KEY_LENGTH};
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
use std::hint::black_box;

fn bench_bulk_insert(c: &mut Criterion) {
  let mut group = c.benchmark_group("BulkInsert");
  let mut r = rng(0);

  for size in [0usize, 1_000, 10_000, 100_000] {
    let base = persisted_bytes(&keys(&mut r, size, KEY_LENGTH));
    let fresh = keys(&mut r, BATCH, KEY_LENGTH);

    group.throughput(Throughput::Elements(BATCH as u64));
    group.bench_with_input(BenchmarkId::from_parameter(size), &size, |b, _| {
      b.iter_batched(
        || (common::from_bytes(&base), fresh.clone()),
        |(set, batch)| black_box(set.bulk_insert(batch).unwrap()),
        criterion::BatchSize::SmallInput,
      );
    });
  }
  group.finish();
}

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