1 个不稳定版本
0.1.0 | 2022年9月25日 |
---|
#2407 in 算法
用于 2 crates
26KB
476 行
intern-str
intern-str
是一个用于 Rust 字符串池化的库。它允许你构建一个图,可以将字符串(和字节字符串)转换为任意值。此外,这些图是 no_std
,可以在编译时嵌入到项目中。
目标是实现低成本的、高效的字符串池化,而不需要分配器或标准库。预期的用例是 MIME 类型,但它也可能在其他许多情况下很有用。
intern-str
是 no_std
,无 extern crate alloc
,forbid(unsafe_code)
,并且除了 Rust 的 core
库之外没有依赖。
实现
intern-str
生成一个由给定字符串集合的所有可能选项组成的确定有限自动机(DFA)。然后使用这个 DFA 将字符串转换为值。DFA 在编译时生成,并嵌入到二进制文件中。这允许在没有分配器或标准库的情况下进行高效的字符串池化。
在许多情况下,这种方法比将字符串转换为小写并匹配它要快得多。当在 /usr/share/dict/words
上匹配时,intern-str
通常在 50 纳秒内完成查询。
这种方法的主要优势是它可以用来创建不区分大小写的匹配,这在其他库(如 phf
)中要困难得多。当与 phf
进行比较时,如果 phf
在运行前需要将字符串转换为小写,那么 intern-str
通常与 phf
一样快,甚至更快。
MSRV
当前的最低安全 Rust 版本(MSRV)是 Rust 1.31.0。任何 MSRV 的变化都至少会导致小版本号的提升。
许可协议
intern_str
根据以下其中之一进行许可:
- Apache许可证版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选。