1 个不稳定版本
0.2.1 | 2021年9月24日 |
---|---|
0.2.0 |
|
0.1.0 |
|
#273 in 缓存
12KB
111 行
缓存映射
该 crate 提供了一种映射,旨在通过在不可变状态下接受新条目来缓存中间结果。它提供了对缓存值的简单不可变引用,这些引用在添加新条目时仍然有效。为了返回无需保护或任何封装的轻量级引用,它使用了 UnsafeCell 和短小的 unsafe 代码。返回的引用保证在现有条目没有适当的可变访问的情况下不会失效。值被封装以确保当 HashMap 扩展时指针保持稳定。
⚠️ 早期版本没有使用封装的值,旧的返回引用可能会变得无效。
⚠️ 此映射不是线程安全的,但可能在多线程代码中接受(未测试)。
主要目的是将此映射包含在更大的数据结构中,并使用它来存储基于其他字段的某些计算的输出。当修改某些字段时,可能需要清除个别条目,以确保下一次返回的结果仍然有效。
当前版本是一个概念验证,有一些改进的潜力。
- 代码很短,在单线程环境中看起来有效,但使用了 unsafe 代码
- 可能不是线程安全的。如果它在多线程环境中编译,应该阻止它。一个线程安全的扩展可能是有用的。
- 它使用内部 HashMap,但可以扩展到其他可索引的后端。