4 个版本 (破坏性更新)
使用旧的 Rust 2015
0.7.0 | 2022年9月19日 |
---|---|
0.6.0 | 2022年1月25日 |
0.5.0 | 2020年11月18日 |
0.4.0 | 2020年1月9日 |
#1403 in 文本处理
57KB
1.5K SLoC
yeslogic-unicode-script
使用 Unicode 15.0 数据在 Rust 中为 char
快速查找 Unicode 脚本属性。
用法
use unicode_script::{get_script, Script};
fn main() {
assert_eq!(get_script('A'), Script::Latin);
assert_eq!(get_script('カ'), Script::Katakana);
}
性能 & 实现说明
ucd-generate 用于生成 tables.rs
。一个构建脚本 (build.rs
) 将其编译成两层查找表。查找时间恒定,因为它只是索引两个数组。
两层方法将代码点映射到块,然后映射到块内的位置。这允许第二层块去重,节省空间。代码通过块大小进行参数化,块大小必须是2的幂。构建脚本中的值对于数据集是最佳的。
这种方法以一些空间换取更快的查找。表占用大约 43KiB。基准测试表明,这种方法比典型的二分搜索方法快 5–10 倍。
有可能对第一级数组中的某些重复值序列进行进一步优化。
依赖关系
~0–650KB
~14K SLoC