4 个版本 (2 个重大更改)

0.3.4 2023 年 2 月 4 日
0.3.3 2023 年 2 月 4 日
0.3.1 2022 年 8 月 16 日
0.2.0 2018 年 4 月 7 日
0.1.0 2018 年 4 月 7 日

缓存 中排名 161

每月下载量 37

Apache-2.0 OR MIT

23KB
335

simple-interner

一个非常简单的互斥体,基于分配引用而不是某些占位符符号。这意味着您可以在不要求重写所有代码以在新的 Symbol 类型上工作,并要求互斥体具体化符号的情况下,主要透明地将互斥体添加到系统中。

此类工具的典型用例是处理重复的文本块,例如在解析源代码时,标识符可能会多次出现。而不是为每个标识符的每个出现单独分配一个 String,互斥体允许您存储 Symbol。这还允许将符号与完整互斥字符串进行比较的速度更快。

此 crate 存在是为了提供最简单的接口选项。对于功能更强大的互斥体,请考虑使用不同的 crate,例如

crate global local 'static opt[^1] str-only symbol size symbols deref
simple-interner manual[^2] yes no no &T yes
intaglio no yes yes yes u32 no
internment rc[^3] yes no no &T yes
lasso no yes yes yes u8usize no
string-interner no yes optionally yes u16usize no
string_cache static only rc[^3] buildscript yes u64 yes
symbol_table yes yes no yes u32 global only
ustr yes no no yes usize yes

(欢迎为此表提出 PR!)

[^1]: 互斥体存储 &'static 引用而不复制指针到存储中,例如存储 Cow<'static, str> 而不是 Box<str>.

注[2]:目前,在static内部创建Interner,使用Interner::with_hasher,需要启用hashbrown功能。

注[3]:使用引用计数来收集全局未使用的符号。

依赖项

~0–5MB