6 个版本
0.3.8 | 2024年5月28日 |
---|---|
0.3.7 | 2023年11月17日 |
0.3.6 | 2023年10月3日 |
0.3.5 | 2023年4月14日 |
0.3.3 | 2022年8月6日 |
#26 in #icu4x
874 每月下载量
用于 icu_datagen
1MB
13K SLoC
icu_codepointtrie_builder
icu_codepointtrie_builder
是 ICU4X
项目的实用工具包。
此包公开了在运行时从提供的数据构建 CodePointTrie
的功能。由于通常期望 CodePointTrie
数据是预编译的,因此此包未针对速度进行优化;应在构建阶段使用。
底层,此包使用 ICU4C 的 CodePointTrie 构建器代码,UMutableCPTrie
。有关更多上下文,请参阅 https://github.com/unicode-org/icu4x/issues/1837。
与 ICU4X 的大部分内容不同,由于原生依赖,此包不保证无 panic。
构建配置
此包有两种主要使用模式:作为 Cargo 功能公开的 "wasm"
和 "icu4c"
。如果两者都启用,代码将内部使用 wasm 代码路径。
“"wasm"
”模式使用一个打包在Rust包中的Wasm模块,该模块包含预编译的ICU4C CodePointTrie构建代码。它使用Wasmer运行时评估Wasm模块,这“只需工作”,但需要大量的Rust/Cargo依赖项。
“"icu4c"
”模式减少了Rust依赖项的数量,但需要本地有ICU4C的副本。要在Cargo中配置“"icu4c"
”模式,设置以下环境变量
- 将
ICU4C_LIB_PATH
设置为包含ICU4C静态或共享库的目录。 - 将
ICU4C_LINK_STATICALLY
设置为任何值以使用静态库。 - 如果ICU4C启用了重命名,将
ICU4C_RENAME_VERSION
设置为ICU4C的整数版本。默认情况下,我们尝试链接未重命名的符号。
如果使用动态链接,在运行时,您可能需要将[DY]LD_LIBRARY_PATH
设置为ICU4C_LIB_PATH
。
如果不使用Cargo,请确保通过-L
将ICU4C_LIB_PATH
传递给链接器,通过-l
标志链接到icuuc
、icui18n
和icudata
,如果您需要重命名的ICU4C符号,请设置--cfg icu4c_enable_renaming
。
示例
use icu::collections::codepointtrie::CodePointTrie;
use icu::collections::codepointtrie::TrieType;
use icu_codepointtrie_builder::CodePointTrieBuilder;
use icu_codepointtrie_builder::CodePointTrieBuilderData;
let default_value = 1;
let error_value = 2;
let values_by_code_point = &[3, 4, 5, 6];
let cpt: CodePointTrie<u8> = CodePointTrieBuilder {
data: CodePointTrieBuilderData::ValuesByCodePoint(values_by_code_point),
default_value,
error_value,
trie_type: TrieType::Small,
}
.build();
assert_eq!(cpt.get32(0), 3);
assert_eq!(cpt.get32(1), 4);
assert_eq!(cpt.get32(2), 5);
assert_eq!(cpt.get32(3), 6);
assert_eq!(cpt.get32(4), 1); // default value
assert_eq!(cpt.get32(u32::MAX), 2); // error value
更多信息
有关开发、作者、贡献等信息,请访问ICU4X 主页
。
依赖关系
~0.7–2.1MB
~45K SLoC