3个不稳定版本

0.5.0 2024年2月24日
0.4.1 2023年12月27日
0.4.0 2023年12月27日

#766数据结构

每月 43次下载
用于 ilex

Apache-2.0

160KB
3K SLoC

twie

twie [twaɪ] - 快速压缩的前缀树。

这个crate提供了一个Trie类型,该类型实现了一个具有切片键的关联容器。它有以下属性。

  • 大多数一次操作都是最坏情况下的O(n),其中n是键的字节长度。这可能需要最多2n个树跳跃,但内部表示尝试在可能的情况下最小化这一点。

  • 找到trie中所有字符串的前缀也是O(n)。这些前缀按顺序提供。

  • 从一个迭代器构建trie是二次的。

  • 整个trie的子trie(即具有某些特定前缀的所有条目)可以像常规trie一样操作(不幸的是,插入只支持从根开始)。

  • 存储键的内存是共享的。

  • trie的内部索引类型是可配置的,这允许通过缩小树节点的大小来交换最大键大小,从而减少内存使用。

let words = Trie::<str, i32>::from([
  ("poise", 0),
  ("poison", 1),
  ("poisonous", 2),
  ("poison #9", 3),
]);

assert_eq!(
  words.prefixes("poisonous snake").map(|(k, _)| k).collect::<Vec<_>>(),
  ["poison", "poisonous"],
)

依赖关系

~1MB
~13K SLoC