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 次下载
425KB
814 行
panoradix
我实现 Radix 树的看法,用于需要大型的数据映射且索引为切片的情况。
这个仓库有什么?
两者都由 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 总是受欢迎的!