pub struct LfudaCacheConfig {
pub capacity: NonZeroUsize,
pub initial_age: usize,
pub max_size: u64,
}Expand description
Configuration for an LFUDA (Least Frequently Used with Dynamic Aging) cache.
LFUDA enhances LFU by using a dynamic aging mechanism that prevents old frequently-accessed items from permanently blocking new items.
§Fields
capacity: Maximum number of entries the cache can hold. Each entry has memory overhead (~64-128 bytes) for keys, pointers, and metadata.initial_age: Initial global age value (default: 0)max_size: Maximum total size in bytes for cached values. Set this based on your memory budget, not tou64::MAX. See module docs for sizing guidance.
§Sizing Recommendations
Always set meaningful values for both fields:
- In-memory cache:
max_size= memory budget for values;capacity=max_size/ average_value_size - Disk-based cache:
max_size= disk space allocation;capacity=max_size/ average_object_size
§Examples
use cache_rs::config::LfudaCacheConfig;
use cache_rs::LfudaCache;
use core::num::NonZeroUsize;
// 10MB cache for ~1KB average values → ~10,000 entries
let config = LfudaCacheConfig {
capacity: NonZeroUsize::new(10_000).unwrap(),
initial_age: 0,
max_size: 10 * 1024 * 1024, // 10MB
};
let cache: LfudaCache<String, Vec<u8>> = LfudaCache::init(config, None);
// Small cache for tiny values with initial age
let config = LfudaCacheConfig {
capacity: NonZeroUsize::new(500).unwrap(),
initial_age: 100,
max_size: 64 * 1024, // 64KB is ample for small values
};
let cache: LfudaCache<&str, i32> = LfudaCache::init(config, None);Fields§
§capacity: NonZeroUsizeMaximum number of key-value pairs the cache can hold. Account for ~64-128 bytes overhead per entry beyond value size.
initial_age: usizeInitial global age value
max_size: u64Maximum total size in bytes for cached values.
Set based on your memory/disk budget. Avoid using u64::MAX.
Trait Implementations§
Source§impl Clone for LfudaCacheConfig
impl Clone for LfudaCacheConfig
Source§fn clone(&self) -> LfudaCacheConfig
fn clone(&self) -> LfudaCacheConfig
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for LfudaCacheConfig
impl Debug for LfudaCacheConfig
impl Copy for LfudaCacheConfig
Auto Trait Implementations§
impl Freeze for LfudaCacheConfig
impl RefUnwindSafe for LfudaCacheConfig
impl Send for LfudaCacheConfig
impl Sync for LfudaCacheConfig
impl Unpin for LfudaCacheConfig
impl UnwindSafe for LfudaCacheConfig
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
Mutably borrows from an owned value. Read more