12个版本
0.6.1 | 2020年2月1日 |
---|---|
0.6.0 | 2019年8月26日 |
0.5.0 | 2018年8月17日 |
0.4.1 | 2017年8月18日 |
0.1.1 | 2017年1月30日 |
#134 in 缓存
1,356 每月下载
在 12 个crate中使用 (2 个直接使用)
9KB
151 行
一个缓存,将跟踪放入元素的总体大小,并基于该值进行驱逐。缓存是线程安全的,并返回Arc引用。
使用方法
extern crate multicache;
use multicache::MultiCache;
use std::sync::Arc;
fn main() {
let cache = MultiCache::new(200);
cache.put(0, 0, 100);
cache.put(1, 1, 100);
cache.put(2, 2, 100);
assert_eq!(cache.get(0), None);
assert_eq!(cache.get(1), Some(Arc::new(1)));
assert_eq!(cache.get(2), Some(Arc::new(2)));
}
进行get操作会将值提升为最后被驱逐的值
extern crate multicache;
use multicache::MultiCache;
use std::sync::Arc;
fn main() {
let cache = MultiCache::new(200);
cache.put(0, 0, 100);
cache.put(1, 1, 100);
cache.get(0);
cache.put(2, 2, 100);
assert_eq!(cache.get(0), Some(Arc::new(0)));
assert_eq!(cache.get(1), None);
assert_eq!(cache.get(2), Some(Arc::new(2)));
}
lib.rs
:
一个缓存,将跟踪放入元素的总体大小,并基于该值进行驱逐。缓存是线程安全的,并返回Arc引用。
示例
extern crate multicache;
use multicache::MultiCache;
use std::sync::Arc;
fn main() {
let cache = MultiCache::new(200);
cache.put(0, 0, 100);
cache.put(1, 1, 100);
cache.put(2, 2, 100);
assert_eq!(cache.get(&0), None);
assert_eq!(cache.get(&1), Some(Arc::new(1)));
assert_eq!(cache.get(&2), Some(Arc::new(2)));
}
进行get操作会将值提升为最后被驱逐的值
extern crate multicache;
use multicache::MultiCache;
use std::sync::Arc;
fn main() {
let cache = MultiCache::new(200);
cache.put(0, 0, 100);
cache.put(1, 1, 100);
cache.get(&0);
cache.put(2, 2, 100);
assert_eq!(cache.get(&0), Some(Arc::new(0)));
assert_eq!(cache.get(&1), None);
assert_eq!(cache.get(&2), Some(Arc::new(2)));
}
依赖
~49KB