[][src]Crate clru

Another LRU cache implementation in rust. The cache is backed by a HashMap and thus offers a O(1) time complexity for common operations:

  • get / get_mut
  • put / pop
  • peek / peek_mut

Example


use clru::CLruCache;

let mut cache = CLruCache::new(2);
cache.put("apple".to_string(), 3);
cache.put("banana".to_string(), 2);

assert_eq!(cache.get("apple"), Some(&3));
assert_eq!(cache.get("banana"), Some(&2));
assert!(cache.get("pear").is_none());

assert_eq!(cache.put("banana".to_string(), 4), Some(2));
assert_eq!(cache.put("pear".to_string(), 5), None);

assert_eq!(cache.get("pear"), Some(&5));
assert_eq!(cache.get("banana"), Some(&4));
assert!(cache.get("apple").is_none());

{
    let v = cache.get_mut("banana").unwrap();
    *v = 6;
}

assert_eq!(cache.get("banana"), Some(&6));

Structs

CLruCache

An LRU cache with constant time operations.

CLruCacheIter

An iterator over the entries of a CLruCache.

CLruCacheIterMut

An iterator over mutables entries of a CLruCache.