tiny-cache 0.5.0

FIFO and per-user LRU caches with shared values
Documentation
use std::rc::Rc;

use tiny_cache::{
    FifoCache,
    LRUCache,
};

fn main() {
    let mut fifo = FifoCache::new(2);
    for key in 0..2 {
        fifo.insert(key, format!("Value {key}"));
    }
    fifo.insert(2, "Newest value".to_owned());
    assert!(fifo.get(&0).is_none());
    assert_eq!(fifo.len(), 2);
    fifo.set_capacity(1);
    assert_eq!(fifo.get(&1), None);
    assert_eq!(fifo.len(), 1);

    let mut shared = LRUCache::<String, u64>::default();
    let first = shared
        .utilize(1, &"greeting")
        .unwrap_or_else(|| shared.insert(1, &"greeting", "Hello".to_owned()));
    let second = shared
        .utilize(2, &"greeting")
        .unwrap_or_else(|| shared.insert(2, &"greeting", "Hello".to_owned()));
    assert!(Rc::ptr_eq(&first, &second));

    shared.remove(&1);
    assert_eq!(shared.len(), 1);
    shared.remove(&2);
    assert!(shared.is_empty());
    assert_eq!(first.as_str(), "Hello");
}