postgresql_embedded 0.20.4

Install and run a PostgreSQL database locally on Linux, MacOS or Windows. PostgreSQL can be bundled with your application, or downloaded on demand.
Documentation
use criterion::{Criterion, criterion_group, criterion_main};
use postgresql_embedded::blocking::PostgreSQL;
use postgresql_embedded::{Result, Settings};
use std::time::Duration;

fn benchmarks(criterion: &mut Criterion) {
    bench_lifecycle(criterion).ok();
}

fn bench_lifecycle(criterion: &mut Criterion) -> Result<()> {
    criterion.bench_function("lifecycle", |bencher| {
        bencher.iter(|| {
            lifecycle().ok();
        });
    });

    Ok(())
}

fn lifecycle() -> Result<()> {
    let settings = Settings {
        timeout: Some(Duration::from_secs(30)),
        ..Default::default()
    };
    let mut postgresql = PostgreSQL::new(settings);
    postgresql.setup()?;
    postgresql.start()?;
    postgresql.stop()
}

criterion_group!(
    name = benches;
    config = Criterion::default()
        .measurement_time(Duration::from_secs(30))
        .sample_size(10);
    targets = benchmarks
);
criterion_main!(benches);