5个版本
0.1.4 | 2020年7月21日 |
---|---|
0.1.3 | 2018年6月7日 |
0.1.2 | 2018年2月24日 |
0.1.1 | 2017年12月4日 |
0.1.0 | 2017年10月25日 |
#66 in 数据结构
425,695 每月下载量
在 298 个crate中使用 (28 直接)
59KB
919 行
linked_hash_set
此库提供了一个具有可预测迭代顺序的哈希集,该顺序基于元素的插入顺序。它被实现为一个linked_hash_map::LinkedHashMap
,其中值是空的,类似于标准库中从HashMap
实现HashSet
的方式。
与std HashSet
的比较
一般用法与传统哈希集非常相似,但此结构还维护了插入顺序。
与HashSet
相比,LinkedHashSet
使用一个额外的双向链表贯穿其条目。因此提供了方法 front()
、pop_front()
、back()
、pop_back()
和 refresh()
。
与IndexSet
的比较
与indexmap::IndexSet
相比,虽然两者都维护插入顺序,但LinkedHashSet
使用链表允许高效地删除而不影响剩余元素顺序。然而,当这种区别不重要时,indexmap应该是更快的选项。
示例
let mut set = linked_hash_set::LinkedHashSet::new();
assert!(set.insert(234));
assert!(set.insert(123));
assert!(set.insert(345));
assert!(!set.insert(123)); // Also see `insert_if_absent` which won't change order
assert_eq!(set.into_iter().collect::<Vec<_>>(), vec![234, 345, 123]);
最低支持的rust编译器
此crate使用最新稳定版本的rust进行维护。
依赖
~235KB