1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
mod cache; mod policy; pub use cache::{EvictionPolicy, InsertionPolicy, ModularCache, TtlCache}; pub mod preconfig { use super::policy::eviction::LruEvictionPolicy; use super::policy::insertion::AlwaysInsertPolicy; use super::ModularCache; pub type LruCache<K, V> = ModularCache<K, V, AlwaysInsertPolicy, LruEvictionPolicy<K>>; pub type TtlLruCache<K, V> = super::TtlCache<K, V, AlwaysInsertPolicy, LruEvictionPolicy<K>>; #[cfg(feature = "async")] pub mod concurrent { use super::LruCache as SingleThreadLruCache; use super::TtlLruCache as SingleThreadTtlCache; use crate::cache::ConcurrentCache; use std::{hash::Hash, time::Duration}; pub type LruCache<K, V> = ConcurrentCache<SingleThreadLruCache<K, V>>; pub fn new_lru_cache<K, V>(maximum_size: usize) -> LruCache<K, V> where K: Hash + Eq + Clone + std::fmt::Debug, V: Clone, { LruCache::new(SingleThreadLruCache::new(maximum_size)) } pub type TtlLruCache<K, V> = ConcurrentCache<SingleThreadTtlCache<K, V>>; pub fn new_ttl_cache<K, V>(maximum_size: usize, ttl: Duration) -> TtlLruCache<K, V> where K: Hash + Eq + Clone + std::fmt::Debug, V: Clone, { TtlLruCache::new(SingleThreadTtlCache::new(maximum_size, ttl)) } } }