Instantiate and use an LruCache
masterTo use LruCache, you must provide a capacity using NonZeroUsize. The cache will automatically evict the least recently used items when the capacity is reached. The following example demonstrates instantiation, insertion, retrieval, eviction behavior, and mutable access.
extern crate lru;
use lru::LruCache;
use std::num::NonZeroUsize;
fn main() {
let mut cache = LruCache::new(NonZeroUsize::new(2).unwrap());
cache.put("apple", 3);
cache.put("banana", 2);
assert_eq!(*cache.get(&"apple").unwrap(), 3);
assert_eq!(*cache.get(&"banana").unwrap(), 2);
assert!(cache.get(&"pear").is_none());
assert_eq!(cache.put("banana", 4), Some(2));
assert_eq!(cache.put("pear", 5), None);
assert_eq!(*cache.get(&"pear").unwrap(), 5);
assert_eq!(*cache.get(&"banana").unwrap(), 4);
assert!(cache.get(&"apple").is_none());
{
let v = cache.get_mut(&"banana").unwrap();
*v = 6;
}
assert_eq!(*cache.get(&"banana").unwrap(), 6);
}