4 个版本 (2 个重大更改)
0.3.4 | 2023 年 2 月 4 日 |
---|---|
0.3.3 |
|
0.3.1 | 2022 年 8 月 16 日 |
0.2.0 | 2018 年 4 月 7 日 |
0.1.0 | 2018 年 4 月 7 日 |
在 缓存 中排名 161
每月下载量 37
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 | u8 –usize |
no |
string-interner | no | yes | optionally | yes | u16 –usize |
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