pub struct LruHeaderCache { /* private fields */ }Expand description
LRU (Least Recently Used) cache for article metadata
Implements a simple LRU cache using a HashMap and access ordering. When the cache is full, the least recently accessed entry is evicted.
§Example
use nntp_rs::cache::{HeaderCache, LruHeaderCache};
use nntp_rs::XoverEntry;
let mut cache = LruHeaderCache::new(2); // Max 2 entries
let entry1 = XoverEntry {
article_number: 1,
subject: "First".to_string(),
author: "author1@example.com".to_string(),
date: "2024-01-01".to_string(),
message_id: "<1@example.com>".to_string(),
references: "".to_string(),
bytes: 100,
lines: 10,
};
let entry2 = XoverEntry {
article_number: 2,
subject: "Second".to_string(),
author: "author2@example.com".to_string(),
date: "2024-01-02".to_string(),
message_id: "<2@example.com>".to_string(),
references: "".to_string(),
bytes: 200,
lines: 20,
};
cache.put(1, entry1);
cache.put(2, entry2);
assert_eq!(cache.len(), 2);
// Access entry 1 to make it recently used
cache.get(&1);
// Adding a third entry will evict entry 2 (least recently used)
let entry3 = XoverEntry {
article_number: 3,
subject: "Third".to_string(),
author: "author3@example.com".to_string(),
date: "2024-01-03".to_string(),
message_id: "<3@example.com>".to_string(),
references: "".to_string(),
bytes: 300,
lines: 30,
};
cache.put(3, entry3);
assert_eq!(cache.len(), 2);
assert!(cache.contains(&1)); // Still cached
assert!(!cache.contains(&2)); // Evicted
assert!(cache.contains(&3)); // Newly addedImplementations§
Source§impl LruHeaderCache
impl LruHeaderCache
Sourcepub fn new(max_size: usize) -> Self
pub fn new(max_size: usize) -> Self
Create a new LRU cache with the specified maximum size
§Arguments
max_size- Maximum number of entries to cache (must be > 0)
§Panics
Panics if max_size is 0
§Example
use nntp_rs::cache::{LruHeaderCache, HeaderCache};
let cache = LruHeaderCache::new(1000);
assert_eq!(cache.capacity(), 1000);
assert!(cache.is_empty());Trait Implementations§
Source§impl Clone for LruHeaderCache
impl Clone for LruHeaderCache
Source§fn clone(&self) -> LruHeaderCache
fn clone(&self) -> LruHeaderCache
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 LruHeaderCache
impl Debug for LruHeaderCache
Source§impl HeaderCache for LruHeaderCache
impl HeaderCache for LruHeaderCache
Auto Trait Implementations§
impl Freeze for LruHeaderCache
impl RefUnwindSafe for LruHeaderCache
impl Send for LruHeaderCache
impl Sync for LruHeaderCache
impl Unpin for LruHeaderCache
impl UnwindSafe for LruHeaderCache
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