Key-Value based in-memory cache library which supports Custom Expiration Policies with standard HashMap, HashSet interface.
use std::thread::sleep;
use std::time::Duration;
use endorphin::policy::TTLPolicy;
use endorphin::HashMap;
fn main() {
let mut cache = HashMap::new(TTLPolicy::new());
cache.insert("Still", "Alive", Duration::from_secs(3));
cache.insert("Gonna", "Die", Duration::from_secs(1));
sleep(Duration::from_secs(1));
assert_eq!(cache.get(&"Still"), Some(&"Alive"));
assert_eq!(cache.get(&"Gonna"), None);
}HashSet works the same way, with the expiration info riding along on insert.
use std::thread::sleep;
use std::time::Duration;
use endorphin::policy::TTLPolicy;
use endorphin::HashSet;
fn main() {
let mut cache = HashSet::new(TTLPolicy::new());
cache.insert("Still", Duration::from_secs(3));
cache.insert("Gonna", Duration::from_secs(1));
sleep(Duration::from_secs(1));
assert!(cache.contains(&"Still"));
assert!(!cache.contains(&"Gonna"));
}Currently, we are providing four pre-defined policies.
LazyFixedTTLPolicyuses Lazy Expiration as other cache crates do, it expires items when you access entry after its TTL.TTLPolicyuses Active Expiration which expires even you don't access to expired entries.TTIPolicyuses Active Expiration which expires even you don't access to expired entries.MixedPolicyis mixed policy of TTL and TTI