2个版本
使用旧的Rust 2015
0.1.1 | 2018年9月13日 |
---|---|
0.1.0 | 2018年9月13日 |
在缓存分类下排名#273
9KB
114 行
Timed Cache
该库是一个缓存实现,通过键存储其内容,以及值写入缓存后有效的时长。
如果用户尝试从TimedCache
中获取值时值缺失,或者值的存储Duration
已过期,则将使用指定的函数重新生成该值。
示例
let cache = TimedCache::with_time_to_keep(Duration::from_seconds(60));
cache.get(&"key".to_owned(), || some_mutexed_service.lock().unwrap().call());
有关信息,请参阅测试和文档。
贡献
我很乐意得到帮助来改进和扩展这个库。请留下问题或提交一个pull请求!
lib.rs
:
示例
以下示例显然过于简单,但可以了解如何使用此库。在实际应用中,生成函数可能需要调用网络服务来获取会话密钥。
extern crate timed_cache;
use timed_cache::TimedCache;
use std::time::Duration;
use std::sync::Mutex;
struct TestService(usize);
impl TestService {
fn next(&mut self) -> usize {
let n = self.0;
self.0 += 1;
n
}
}
let time_to_keep = Duration::from_millis(1);
let mut cache = TimedCache::<String, usize>::with_time_to_keep(time_to_keep);
let service = Mutex::new(TestService(0));
let generate_value = || service.lock().unwrap().next();
(0..1000).for_each(|_| {
// this generator method will
let value = cache.get(&"value".to_owned(), generate_value);
println!("{}", value);
});