Tote
A lightweight data cache for CLI libraries
For CLIs that query a default set of information with each invocation,
Tote
offers a convenient way to cache data to a file for quicker
subsequent CLI runs.
When Tote
is used for a cache (examples below), the tote.get()
call will:
- Check that the
Tote
filepath exists and has been modified within the specified expiry time - Deserialize and return the data
If the cached data is not present or expired, Tote
will:
- Use the
Fetch::fetch
orAsyncFetch::fetch
methods to retrieve the data - Serialize the data (using
serde_json
) and write to theTote
filepath - Return the newly fetched data
Features
Default
The default feature uses a Synchronous Fetch
trait:
use Duration;
use ;
use ;
// Implement `serde`'s `Serialize`/`Deserialize` for you own data
// or make a NewType and `derive` so `Tote` can read and write the cached data
;
Feature 'async'
Specify the "async"
feature for an Asynchronous (via Futures) for fetching data:
Cargo.toml
= { = "*", = ["async"] }
use Duration;
use async_trait;
use ;
use ;
// Implement `serde`'s `Serialize`/`Deserialize` for you own data
// or make a NewType and `derive` so `Tote` can read and write the cached data
;
async