tinycache

Features

tinycache is minimal file cache with binary serialization:

Features Overview

Get cached or fetch pattern (read, invalidate if old or non compatible, fetch and write if does not exist):

rust let cache_ref = TinyRef::new().max_age(Duration::from_secs(max_age_secs)); let expensive_value = cache_ref.get_cached_or_fetch(item_key, move || fetch_value());

Read, write (ya):

rust let cache_ref = TinyRef::new(); // write does not return result, it logs tracing if there is an issue // found that to be more useful cache_ref.write(key.clone(), &token); if let Some(v) = cache_ref.read::<Token>(key.clone()) { println!("got {:?}", v); }

Under the hood using bincode for small file fast read/write:

rust let bytes = bincode::serialize(value).map_err(StoreErr::ser)?;

Item keys formatted using sha1:

rust fn fmt_key(k: String) -> Vec<u8> { let mut hasher = Sha1::new(); hasher.update(k.as_bytes()); hasher.finalize().to_vec() }

Tracing dep and logging can be disabled with a feature: toml [features] default = ["tracing"] tracing = ["dep:tracing"]