15 个版本
0.4.6 | 2022 年 10 月 4 日 |
---|---|
0.4.5 | 2021 年 9 月 23 日 |
0.4.4 | 2019 年 12 月 29 日 |
0.4.3 | 2019 年 11 月 20 日 |
0.1.2 | 2019 年 7 月 11 日 |
在 数据结构 中排名 #231
每月下载量 23,196 次
用于 22 个 包(直接使用 4 个)
53KB
1K SLoC
cedarwood
cedarwood 是 Rust 中高效可更新的双数组 trie(从 cedar 转移过来)。此库使用了足够的随机测试进行测试,但由于尚未在高压生产环境中进行测试,因此被视为 beta 版。如果您有好的用例来证明其稳定性,请告诉我。
安装
将其添加到您的 Cargo.toml
[dependencies]
cedarwood = "0.4"
然后就可以使用了。如果您使用的是 Rust 2015,则还需要在包根目录中添加 extern crate cedarwood
。
示例
let dict = vec![
"a",
"ab",
"abc",
"アルゴリズム",
"データ",
"構造",
"网",
"网球",
"网球拍",
"中",
"中华",
"中华人民",
"中华人民共和国",
];
let key_values: Vec<(&str, i32)> = dict.into_iter().enumerate().map(|(k, s)| (s, k as i32)).collect();
let mut cedar = Cedar::new();
cedar.build(&key_values);
let result: Vec<i32> = cedar.common_prefix_search("abcdefg").iter().map(|x| x.0).collect();
assert_eq!(vec![0, 1, 2], result);
let result: Vec<i32> = cedar
.common_prefix_search("网球拍卖会")
.iter()
.map(|x| x.0)
.collect();
assert_eq!(vec![6, 7, 8], result);
let result: Vec<i32> = cedar
.common_prefix_search("中华人民共和国")
.iter()
.map(|x| x.0)
.collect();
assert_eq!(vec![9, 10, 11, 12], result);
let result: Vec<i32> = cedar
.common_prefix_search("データ構造とアルゴリズム")
.iter()
.map(|x| x.0)
.collect();
assert_eq!(vec![4], result);
运行基准测试
cargo bench
许可证
本作品在 BSD-2 许可证下发布,遵循 C++ cedar 的原始许可证。许可证的副本包含在 LICENSE 文件中。
参考
依赖关系
~73KB