#string #immutability #instance #single

immutable_string

Rust的不可变单实例字符串

2个版本

0.1.1 2021年1月4日
0.1.0 2021年1月3日

#2267数据结构

MIT 许可证

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