Additional Rust collections not found in std::collections.
Built on top of the excellent smallvec crate, SmallMap
and SmallSet
are a Map
and Set
respectively that are inlined if they contain fewer values than a (statically chosen) capacity C
, otherwise they are heap allocated and backed by an IndexMap
.
Completion | Name | Behaves as |
---|---|---|
🟩🟩🟨⬜️⬜️ | SmallMap | IndexMap<K, V> |
🟩🟩🟨⬜️⬜️ | SmallSet | IndexSet<T> |
⬜️⬜️⬜️⬜️⬜️ | SmallSortedMap | BTreeMap<K, V> |
⬜️⬜️⬜️⬜️⬜️ | SmallSortedSet | BTreeSet<T> |
Completion | Name | Behaves as |
---|---|---|
🟩🟩🟩🟩🟨 | HashSetMultimap | HashMap<K, HashSet<V>> |
🟩🟩🟩🟩🟨 | HashVecMultimap | HashMap<K, Vec<V>> |
🟩🟩🟩🟩🟨 | IndexSetMultimap | IndexMap<K, IndexSet<V>> |
🟩🟩🟩🟩🟨 | IndexVecMultimap | IndexMap<K, Vec<V>> |
⬜️⬜️⬜️⬜️⬜️ | BTreeSetMultimap | BTreeMap<K, BTreeSet<V>> |
⬜️⬜️⬜️⬜️⬜️ | BTreeVecMultimap | BTreeMap<K, Vec<V>> |
⬜️⬜️⬜️⬜️⬜️ | EnumHashSetMultimap | EnumMap<K, HashSet<V>> |
⬜️⬜️⬜️⬜️⬜️ | EnumIndexSetMultimap | EnumMap<K, IndexSet<V>> |
⬜️⬜️⬜️⬜️⬜️ | EnumVecMultimap | EnumMap<K, Vec<V>> |
⬜️⬜️⬜️⬜️⬜️ | EnumEnumMultimap | EnumMap<K, EnumSet<V>> |
Completion | Name | Drop-in replacement for | Implemented as | Distinguishing features |
---|---|---|---|---|
🟩🟩🟩🟨⬜️ | VecMap | IndexMap<K,V> |
Vec<Option<T>> |
Fast random access |
Click here for a detailed description and overview of the API.
Completion | Name | Behaves as |
---|---|---|
⬜️⬜️⬜️⬜️⬜️ | IndexMultiset | IndexMap<K,usize> |
⬜️⬜️⬜️⬜️⬜️ | HashMultiset | HashMap<K,usize> |
⬜️⬜️⬜️⬜️⬜️ | BTreeMultiset | BTreeMap<K,usize> |
⬜️⬜️⬜️⬜️⬜️ | EnumMultiset | EnumMap<K,usize> |
Some work is already done in this PR.