17 releases

0.2.5 Jun 22, 2020
0.2.4 Jun 21, 2020
0.2.1 May 21, 2020
0.1.19 May 15, 2020

#1330 in Algorithms

Download history 80/week @ 2024-03-13 80/week @ 2024-03-20 92/week @ 2024-03-27 77/week @ 2024-04-03 52/week @ 2024-04-10 126/week @ 2024-04-17 113/week @ 2024-04-24 63/week @ 2024-05-01 77/week @ 2024-05-08 111/week @ 2024-05-15 111/week @ 2024-05-22 53/week @ 2024-05-29 18/week @ 2024-06-05 56/week @ 2024-06-12 25/week @ 2024-06-19 52/week @ 2024-06-26

154 downloads per month

MIT/Apache

11KB
217 lines

lfu-cache

A rust implementation of a Least Frequently Used (LFU) cache.

It supports insertions and retrievals, both of which are performed in constant time. In the event of tie between multiple least frequently used entries, the least recently used entry is evicted.

Usage:

 extern crate lfu;
 use lfu::LFUCache;

 fn main() {
     let mut lfu = LFUCache::new(2).unwrap(); //initialize an lfu with a maximum capacity of 2 entries
     lfu.set(2, 2);
     lfu.set(3, 3);
     lfu.set(3, 30);
    
    
    //We're at fully capacity. First purge (2,2) since it's the least-frequently-used entry, then insert the current entry
     lfu.set(4,4); 
    
     assert_eq!(lfu.get(&2), None);
     assert_eq!(lfu.get(&3), Some(&30));
}

Install

https://crates.io/crates/lfu


lib.rs:

An efficient Least Frequently Used Cache implementation.

It supports insertions and retrievals, both of which are performed in constant time. In the event of tie between two least frequently used entries, the least recently used entry is evicted.

Examples

extern crate lfu;
use lfu::LFUCache;

let mut lfu = LFUCache::with_capacity(2).unwrap(); //initialize an lfu with a maximum capacity of 2 entries
lfu.set(2, 2);
lfu.set(3, 3);
lfu.set(3, 30);
lfu.set(4,4); //We're at fully capacity. First purge (2,2) since it's the least-frequently-used entry, then insert the current entry
assert_eq!(lfu.get(&2), None);
assert_eq!(lfu.get(&3), Some(&30));

Dependencies

~110KB