pub struct ByteLruCache<K: Eq + Hash + Clone, V> { /* private fields */ }Expand description
Byte-limited LRU cache with an optional entry cap.
Unlike an entry-count-limited LRU, this cache tracks the resident byte cost
of each value (via ResidentBytes) and evicts the least-recently-used
entries until the total resident bytes fit under max_bytes. This is the
correct policy for large-scale payloads where a single cache entry (e.g.
an n*K distance matrix) can itself be multiple gigabytes and an entry-count
cap would silently blow the memory budget. Small entry caps are still useful
for payloads with known shape, such as owned PC data matrices shared across
model blocks.
Implementations§
Source§impl<K: Eq + Hash + Clone, V: Clone + ResidentBytes> ByteLruCache<K, V>
impl<K: Eq + Hash + Clone, V: Clone + ResidentBytes> ByteLruCache<K, V>
pub fn new(max_bytes: usize) -> Self
pub fn with_max_entries(max_bytes: usize, max_entries: usize) -> Self
Sourcepub fn new_sharded(max_bytes: usize, shard_count: usize) -> Self
pub fn new_sharded(max_bytes: usize, shard_count: usize) -> Self
Like new but partitions the cache across shard_count
independently-locked LRU shards to cut lock contention under heavy
concurrent access. The byte budget is divided evenly across shards, so
this is only appropriate for caches holding many small entries.
Sourcepub fn with_max_entries_sharded(
max_bytes: usize,
max_entries: usize,
shard_count: usize,
) -> Self
pub fn with_max_entries_sharded( max_bytes: usize, max_entries: usize, shard_count: usize, ) -> Self
Like with_max_entries but sharded; see
new_sharded.
pub fn get(&self, key: &K) -> Option<V>
pub fn insert(&self, key: K, value: V)
pub fn resident_bytes(&self) -> usize
pub const fn max_bytes(&self) -> usize
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn clear(&self)
Trait Implementations§
Auto Trait Implementations§
impl<K, V> Freeze for ByteLruCache<K, V>
impl<K, V> RefUnwindSafe for ByteLruCache<K, V>
impl<K, V> Send for ByteLruCache<K, V>
impl<K, V> Sync for ByteLruCache<K, V>
impl<K, V> Unpin for ByteLruCache<K, V>
impl<K, V> UnsafeUnpin for ByteLruCache<K, V>
impl<K, V> UnwindSafe for ByteLruCache<K, V>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more