Skip to content

fiji-flo/shared-expiry-get

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple concurrent async get with expiration for Rust.

Latest Version Docs

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());
}

About

Simple concurrent async get with expiration for Rust.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages