26 releases (13 breaking)
| 0.14.3 | Nov 22, 2024 |
|---|---|
| 0.14.1 | Sep 16, 2024 |
| 0.14.0 | Jun 14, 2024 |
| 0.13.4 | Mar 22, 2024 |
| 0.1.0 | Dec 24, 2021 |
#365 in Data structures
127 downloads per month
195KB
4.5K
SLoC
More collections

Additional Rust collections not found in std::collections.
Small* 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> |
Multimaps
| 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>> |
VecMap
| 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.
Multisets
| 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.
Dependencies
~0–365KB