3 releases (breaking)
0.2.0 | Jan 26, 2021 |
---|---|
0.1.0 | Jan 8, 2020 |
0.0.1 | May 5, 2019 |
#556 in Concurrency
25 downloads per month
22KB
466 lines
Simple concurrent async get with expiration for Rust.
shared-expiry-get
is a wrapper for accessing and caching a remote data source with some
expiration criteria.
Features
- retrieve only once even if multiple threads are trying to access the remote data at the same time
- async support
- update data on expiration
shared-expiry-get
does not:
- retry on error
Example Use Cases
- cached access of an http source respecting cache control
- cached access of a file which may get updated
A basic Example
#[derive(Clone)]
struct MyProvider {}
#[derive(Clone)]
struct Payload {}
impl Expiry for Payload {
fn valid(&self) -> bool {
true
}
}
impl Provider<Payload> for MyProvider {
fn update(&self) -> ExpiryFut<Payload> {
future::ok::<Payload, ExpiryGetError>(Payload {}).into_future().boxed()
}
}
async fn main() {
let rs = RemoteStore::new(MyProvider {});
let payload = rs.get().await;
assert!(payload.is_ok());
}
Dependencies
~1–1.6MB
~33K SLoC