pub trait Cache<K, V>{
// Required methods
fn get(&self, key: &K) -> Option<V>;
fn insert(&self, key: K, value: V) -> Option<V>;
fn remove(&self, key: &K) -> Option<V>;
fn contains_key(&self, key: &K) -> bool;
fn len(&self) -> usize;
fn clear(&self);
fn capacity(&self) -> usize;
// Provided method
fn is_empty(&self) -> bool { ... }
}Expand description
The common read / write / evict contract every cache type in this crate implements.
All methods take &self (not &mut self) so a cache instance can be
shared across threads and across .await points without external locking.
Implementations use interior mutability.
§Access semantics
getis an access: it may update the eviction order (e.g. promoting the entry to most-recently-used).contains_keyis a query only: it must not update the eviction order.insertis an access on the inserted key.removeis destructive and does not update order.
§Example
use cache_mod::{Cache, LruCache};
let cache: LruCache<&'static str, u32> = LruCache::new(4).expect("capacity > 0");
assert_eq!(cache.insert("a", 1), None);
assert_eq!(cache.get(&"a"), Some(1));
assert!(cache.contains_key(&"a"));
assert_eq!(cache.len(), 1);
assert_eq!(cache.remove(&"a"), Some(1));
assert!(cache.is_empty());Required Methods§
Sourcefn get(&self, key: &K) -> Option<V>
fn get(&self, key: &K) -> Option<V>
Returns the value associated with key, if any, and counts as an
access for the purposes of the eviction policy.
Sourcefn insert(&self, key: K, value: V) -> Option<V>
fn insert(&self, key: K, value: V) -> Option<V>
Inserts value under key. Returns the previously-stored value if
key was already present.
May evict one or more existing entries to make room, according to the cache’s eviction policy.
Sourcefn remove(&self, key: &K) -> Option<V>
fn remove(&self, key: &K) -> Option<V>
Removes the entry for key and returns the value if present.
Sourcefn contains_key(&self, key: &K) -> bool
fn contains_key(&self, key: &K) -> bool
Returns true if the cache currently holds an entry for key.
Unlike get, this method does not count as an
access — eviction order is left unchanged.