1 unstable release

0.1.0 Apr 29, 2023

#217 in Caching

MIT/Apache

18KB
357 lines

ded   crates-io-batch docs-badge rust-version-badge workflow-badge

Dead Easy Deduplication

About

ded is a library which performs request coalescing and caching backed by schnellru.

Usage

[dependencies]
ded = "0.1.0"
let cache = DedCache::new(Duration::from_secs(1), 1024);

let key = "key";
async fn value_fut() -> Result<&'static str, Infallible> {
    tokio::time::sleep(Duration::from_secs(2)).await;
    Ok("value")
}

// Accessing a new value
let value = cache.get_or_update(key, value_fut).await?;
assert_eq!(value, "value"); // value is returned, request is performed

// Accessing a cached value
{
    let start = std::time::Instant::now();

    let value = cache.get_or_update(key, value_fut).await?;
    assert_eq!(value, "value");

    // Value was returned immediately
    assert!(start.elapsed() < Duration::from_secs(1));
}

Contributing

We welcome contributions to the project! If you notice any issues or errors, feel free to open an issue or submit a pull request.

License

Licensed under either of

at your option.

Dependencies

~4–10MB
~98K SLoC