#collection #multimap #value #heap-allocated

more_collections

Additional collections not found in std::collections

25 releases (13 breaking)

0.14.2 Oct 9, 2024
0.14.0 Jun 14, 2024
0.13.4 Mar 22, 2024
0.12.0 Dec 22, 2023
0.1.0 Dec 24, 2021

#210 in Data structures

Download history 34/week @ 2024-07-06 3/week @ 2024-07-13 74/week @ 2024-07-20 82/week @ 2024-07-27 35/week @ 2024-08-03 31/week @ 2024-08-10 12/week @ 2024-08-17 16/week @ 2024-08-24 73/week @ 2024-08-31 65/week @ 2024-09-07 167/week @ 2024-09-14 150/week @ 2024-09-21 97/week @ 2024-09-28 264/week @ 2024-10-05 90/week @ 2024-10-12 40/week @ 2024-10-19

500 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–350KB