#multi-map #collection

more_collections

Additional collections not found in std::collections

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

Download history 63/week @ 2025-07-02 19/week @ 2025-07-09 38/week @ 2025-07-16 40/week @ 2025-07-23 41/week @ 2025-07-30 28/week @ 2025-08-06 42/week @ 2025-08-13 41/week @ 2025-08-20 22/week @ 2025-08-27 29/week @ 2025-09-03 37/week @ 2025-09-10 55/week @ 2025-09-17 31/week @ 2025-09-24 39/week @ 2025-10-01 25/week @ 2025-10-08 27/week @ 2025-10-15

127 downloads per month

Apache-2.0

195KB
4.5K SLoC

More collections   Latest Version Docs badge License: Apache-2.0

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>>

A detailed overview.

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