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