#radix-tree #set-key

panoradix

一个通用的映射和集合,都由 Radix 树支持

19 个版本

使用旧的 Rust 2015

0.6.8 2020 年 1 月 31 日
0.6.6 2019 年 10 月 5 日
0.6.5 2017 年 8 月 20 日
0.6.3 2017 年 7 月 1 日

#596 in 数据结构

每月 28 次下载

MIT 许可证

425KB
814

panoradix

我实现 Radix 树的看法,用于需要大型的数据映射且索引为切片的情况。

Travis badge crates.io badge

文档

这个仓库有什么?

两者都由 Radix 树 支持。

任何满足 Ord + Eq + Clone 的元素切片都可以用作键,以及作为字节切片的 str。任何查找都使用 &[T] 完成,迭代将每次产生一个拥有的 Vec<T>(对于 str 它将产生 String 项目)。

键的进一步扩展是可能的,但并不推荐,因为键始终是 [T]。如果您真的想这样做,请查看 ExtensibleKey 特性。

示例

插入 / 查找

let mut map: RadixMap<str, i32> = RadixMap::new();
map.insert("a", 0);
map.insert("ac", 1);

assert_eq!(map.get("a"), Some(&0));
assert_eq!(map.get("ac"), Some(&1));
assert_eq!(map.get("ab"), None);

删除

let v = vec!["foo", "bar", "baz"];
let mut set: RadixSet<str> = RadixSet::from_iter(v);

set.remove("bar");
assert!(!set.contains("bar"));
assert!(set.contains("baz"));

完成

let v = vec!["foo", "bar", "baz"];
let set: RadixSet<str> = RadixSet::from_iter(v);

assert_eq!(set.find("ba").collect::<Vec<_>>(), vec!["bar", "baz"]);

贡献

我试图维护一个需要工作的清单 在这里。问题 / PR 总是受欢迎的!

无运行时依赖