xfetch 1.0.1

Optimal probabilistic cache refresh algorithm
Documentation
use criterion::black_box;
use criterion::criterion_group;
use criterion::criterion_main;
use criterion::Criterion;
use std::time::Duration;
use xfetch::CacheEntry;

fn xfetch(value: u64) -> Option<u64> {
    let entry = CacheEntry::builder(|| value)
        .with_ttl(|_| Duration::from_secs(120))
        .with_delta(|_| Duration::from_secs(10))
        .build();
    if entry.is_expired() {
        None
    } else {
        Some(*entry.get())
    }
}

fn benchmark(c: &mut Criterion) {
    c.bench_function("xfetch", |b| b.iter(|| xfetch(black_box(20))));
}

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