Unicode Normalize

v0.1.0添加于 2026年9月26日示例数据

面向文本流水线的 Unicode 清理:NFC/NFKC 规范化、空白折叠以及不可见字符移除。

示例数据。这些数值仅为占位,并非实测结果。

cargo install kura-rs
kura add unicode-normalize

将源码文件复制到你的项目中。此后代码完全归你所有。

如果其他工具已经安装了 kura 命令,请运行 cargo install kura-rs --bin kura-rs,并改用 kura-rs add。

use crate::parts::unicode_normalize::{normalize, Options};

let clean = normalize(&raw, Options::nfkc().fold_whitespace().strip_invisible());

验证

示例数据

使用基于属性的测试与 unicodedata 3.12(Python)进行对照:向两个实现输入相同数据,并比较输出结果。

参考实现
unicodedata
Python 3.12
测试用例
10,000
基于属性的测试
通过
10,000 / 10,000
全部一致
最近运行
2026年9月26日
UTC

以下数值仅为占位。 这些数值尚未经过实测,请勿当作真实结果。该组件在其 registry 文件中标记为 "sample": true。

基准测试

示例数据

在不同输入规模下对比 kura-rs(Rust)与 unicodedata。 输入约 143 条起更快,最高快 2.2×。

以下数值仅为占位。 这些数值尚未经过实测,请勿当作真实结果。该组件在其 registry 文件中标记为 "sample": true。

kura-rs (Rust)unicodedata
每次运行的耗时(越低越好)。 阴影区域表示参考实现更快的范围。
显示数据表
输入规模kura-rs (Rust)unicodedata加速比
100.01 ms0 ms慢 3.0×
1000.02 ms0.02 ms慢 1.1×
1,0000.09 ms0.16 ms1.8×
10,0000.8 ms1.7 ms2.1×
100,0007.9 ms17 ms2.2×
1,000,00078 ms172 ms2.2×

文件

  • parts/unicode_normalize/mod.rs

crate 依赖