2个不稳定版本
0.3.0 | 2024年1月19日 |
---|---|
0.2.0 | 2023年3月21日 |
#35 在 缓存
95,178 每月下载量
用于 8 个crates (3 直接)
17KB
378 行
CacheMap
CacheMap 是一个用于并发缓存值的结构。
cache
函数将在map中查找值,或使用提供的函数生成并存储新的一个。
这是hclarke/cachemap的一个更新和维护分支。
示例
use cachemap::CacheMap;
let m = CacheMap::new();
let fst = m.cache("key", || 5u32);
let snd = m.cache("key", || 7u32);
assert_eq!(*fst, *snd);
assert_eq!(*fst, 5u32);
特性
- 可以并发缓存值(使用
&CacheMap<K,V>
而不是&mut CacheMap<K,V>
)。 - 返回的引用使用map的生命周期,因此客户端可以避免使用智能指针。
- 客户端可以选择启用
dashmap
特性,它使用内部dashmap
并允许- 获取
Arc<V>
指针,如果值需要超出map的生命周期,并且 - 直接添加
Arc<V>
,允许使用无大小类型的值,并重新使用来自其他地方的Arc<V>
。
- 获取
- 客户端可以选择启用
abi_stable
特性,这将从类型派生abi_stable::StableAbi
。
反特性
- 没有缓存失效:从CacheMap中删除东西的唯一方法是丢弃它。
依赖关系
~0–6.5MB
~23K SLoC