ded

Crates.ioded
lib.rsded
version0.1.0
sourcesrc
created_at2023-04-29 20:17:25.017668
updated_at2023-04-29 20:17:25.017668
descriptionDead Easy Deduplication.
homepage
repositoryhttps://github.com/broxus/ded
max_upload_size
id852281
size29,876
Ivan Kalinin (Rexagon)

documentation

README

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.

Commit count: 9

cargo fmt