#cache #hash-map #sync #data-structures

cachemap2

一个仅插入的并发哈希map,用于缓存值

2个不稳定版本

0.3.0 2024年1月19日
0.2.0 2023年3月21日

#35缓存

Download history • Rust 包仓库 19865/week @ 2024-03-14 • Rust 包仓库 29116/week @ 2024-03-21 • Rust 包仓库 25759/week @ 2024-03-28 • Rust 包仓库 17266/week @ 2024-04-04 • Rust 包仓库 18531/week @ 2024-04-11 • Rust 包仓库 24348/week @ 2024-04-18 • Rust 包仓库 23783/week @ 2024-04-25 • Rust 包仓库 24308/week @ 2024-05-02 • Rust 包仓库 18116/week @ 2024-05-09 • Rust 包仓库 27979/week @ 2024-05-16 • Rust 包仓库 26902/week @ 2024-05-23 • Rust 包仓库 31531/week @ 2024-05-30 • Rust 包仓库 21233/week @ 2024-06-06 • Rust 包仓库 22044/week @ 2024-06-13 • Rust 包仓库 25237/week @ 2024-06-20 • Rust 包仓库 19439/week @ 2024-06-27 • Rust 包仓库

95,178 每月下载量
用于 8 个crates (3 直接)

MIT 许可证

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