1use std::rc::Rc;
2
3use tiny_cache::{
4 FifoCache,
5 LRUCache,
6};
7
8fn main() {
9 let mut fifo = FifoCache::new(2);
10 for key in 0..2 {
11 fifo.insert(key, format!("Value {key}"));
12 }
13 fifo.insert(2, "Newest value".to_owned());
14 assert!(fifo.get(&0).is_none());
15 assert_eq!(fifo.len(), 2);
16 fifo.set_capacity(1);
17 assert_eq!(fifo.get(&1), None);
18 assert_eq!(fifo.len(), 1);
19
20 let mut shared = LRUCache::<String, u64>::default();
21 let first = shared
22 .utilize(1, &"greeting")
23 .unwrap_or_else(|| shared.insert(1, &"greeting", "Hello".to_owned()));
24 let second = shared
25 .utilize(2, &"greeting")
26 .unwrap_or_else(|| shared.insert(2, &"greeting", "Hello".to_owned()));
27 assert!(Rc::ptr_eq(&first, &second));
28
29 shared.remove(&1);
30 assert_eq!(shared.len(), 1);
31 shared.remove(&2);
32 assert!(shared.is_empty());
33 assert_eq!(first.as_str(), "Hello");
34}