2个版本
0.1.1 | 2021年1月4日 |
---|---|
0.1.0 | 2021年1月3日 |
#2267 在 数据结构
8KB
119 行
immutable_string - Rust的不可变共享字符串
该crate提供了一个使用Arc实现的不可变字符串的全局表。当解析大文件时,它避免了对相同字符序列实例的字符串在内存中的重复。
全局共享的WeakHashSet为每个活动的ImmutableString保留一个引用。ImmutableString可以有多个所有者。一旦每个所有者都丢弃了ImmutableString,它就会从WeakHashSet中懒加载并解除分配。
全局共享的WeakHashSet由RwLock保护,它允许多个并发读取者,但保证任何写者都有独占访问权限。当实例化ImmutableString时,构造函数首先获取一个读取器以检查值是否已在映射中存在。如果没有,它放弃读取器锁并尝试获取独占写锁。一旦它有了独占写访问权限,它会再次检查字符串是否不在映射中。然后,它分配字符串并在哈希表中存储一个弱副本。
全局共享的WeakHashSet可能会成为性能瓶颈,在将来应该被分布式哈希表所取代。
更新日志
- 0.1.0
- 首次发布
- 0.1.1
- 包含Display和Debug特质的实现
依赖关系
~160KB