1 unstable release
0.1.0 | Apr 29, 2023 |
---|
#221 in Caching
22 downloads per month
18KB
357 lines
ded
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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~4–11MB
~100K SLoC