#unicode #combining #class #canonical #no-std #properties

no-std unicode-canonical-combining-class

Unicode规范组合类属性快速查找

5个版本 (破坏性更新)

0.5.0 2022年9月19日
0.4.0 2022年7月14日
0.3.0 2022年7月6日
0.2.0 2022年1月25日
0.1.0 2021年6月4日

#850 in 文本处理

Download history • Rust 包仓库 484/week @ 2024-03-14 • Rust 包仓库 528/week @ 2024-03-21 • Rust 包仓库 598/week @ 2024-03-28 • Rust 包仓库 384/week @ 2024-04-04 • Rust 包仓库 621/week @ 2024-04-11 • Rust 包仓库 679/week @ 2024-04-18 • Rust 包仓库 567/week @ 2024-04-25 • Rust 包仓库 644/week @ 2024-05-02 • Rust 包仓库 551/week @ 2024-05-09 • Rust 包仓库 736/week @ 2024-05-16 • Rust 包仓库 557/week @ 2024-05-23 • Rust 包仓库 526/week @ 2024-05-30 • Rust 包仓库 548/week @ 2024-06-06 • Rust 包仓库 521/week @ 2024-06-13 • Rust 包仓库 482/week @ 2024-06-20 • Rust 包仓库 375/week @ 2024-06-27 • Rust 包仓库

每月下载量2,024
7 个crate中使用 (直接使用2个)

Apache-2.0

49KB
932

unicode-canonical-combining-class


使用Unicode 15.0数据在Rust中对char的Unicode规范组合类属性进行快速查找。此crate与no-std兼容。

用法

use unicode_canonical_combining_class::{get_canonical_combining_class, CanonicalCombiningClass};

fn main() {
    assert_eq!(get_canonical_combining_class(''), CanonicalCombiningClass::CCC129);
}

性能与实现说明

ucd-generate 用于生成 tables.rs。一个构建脚本 (build.rs) 将其编译成两层查找表。查找时间是恒定的,因为它只是对两个数组进行索引。

两层方法将码点映射到块,然后映射到块内的位置。这允许第二级块去重,节省空间。代码通过块大小进行参数化,块大小必须是2的幂。构建脚本中的值对于数据集是最佳的。

此方法以牺牲一些空间为代价以获得更快的查找。表占用约24.5KiB。基准测试表明,这种方法比典型的二分查找方法快5-10倍。

有可能进一步优化以消除第一级数组中的某些重复值序列。

没有运行时依赖