|0.1.4||Jul 21, 2020|
|0.1.3||Jun 7, 2018|
|0.1.2||Feb 24, 2018|
|0.1.1||Dec 4, 2017|
|0.1.0||Oct 25, 2017|
#201 in Algorithms
246,784 downloads per month
Used in 207 crates (25 directly)
This library provides an hashed set with predictable iteration order, based on the insertion order of elements.
It is implemented as a
linked_hash_map::LinkedHashMap where the value is
(), in a similar way as
HashSet is implemented from
HashMap in stdlib.
Comparison with std
General usage is very similar to a traditional hashed set, but this structure also maintains insertion order.
LinkedHashSet uses an additional doubly-linked list running through its entries.
As such methods
refresh() are provided.
indexmap::IndexSet, while both maintain insertion order a
LinkedHashSet uses a linked list allowing performant removals that don't affect the order of the remaining elements. However, when this distinction is unimportant indexmap should be the faster option.
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]);
Minimum supported rust compiler
This crate is maintained with latest stable rust.