3个版本 (1个稳定版)
1.0.0 | 2023年2月23日 |
---|---|
0.3.0 | 2022年9月6日 |
0.2.2 | 2022年9月5日 |
#2 in #pruning
28KB
672 行
剪枝基数Trie
Rust实现剪枝基数Trie,最初由Wolf Garbe编写(见credits/PruningRadixTrieLicense.txt)。
用法
使用以下命令将带有负载的术语添加到trie中
pub fn add(&mut self, term: &str, payload: T, weight: U);
之后,您可以使用以下命令进行前缀匹配
pub fn find(&self, prefix: &str, top_k: usize)
-> Vec<(String, &T, &U)>
结果将根据权重按降序返回。
示例
use pruning_radix_trie::PruningRadixTrie;
fn main() {
let mut trie = PruningRadixTrie::new();
trie.add("heyo", vec![1, 2, 3], 5);
trie.add("hello", vec![4, 5, 6], 10);
trie.add("hej", vec![7, 8, 9], 20);
let results = trie.find("he", 10);
for Result { term, payload, weight } in results {
println!("{:10}{:?}{:>4}", term, payload, weight);
}
//hej [7, 8, 9] 20
//hello [4, 5, 6] 10
//heyo [1, 2, 3] 5
}
测试
测量代码覆盖率
注意:目前需要Rust的nightly通道。
首先安装grcov
cargo install grcov
其次安装Rust组件llvm-tools(目前为llvm-tools-preview
,可能很快会变成llvm-tools
)
rustup component add llvm-tools-preview
要运行带代码覆盖率的测试,请运行
bash run_source_cov.sh
将在./target/debug/coverage/
生成一个HTML覆盖率报告。
有关详细信息,请参阅rust-code-coverage-sample。
依赖关系
~9–20MB
~268K SLoC