#collection #multimap #heap-allocated

more_collections

Additional collections not found in std::collections

24 releases (13 breaking)

0.14.1 Sep 16, 2024
0.14.0 Jun 14, 2024
0.13.6 Apr 15, 2024
0.13.4 Mar 22, 2024
0.1.0 Dec 24, 2021

#216 in Data structures

Download history 234/week @ 2024-06-11 52/week @ 2024-06-18 63/week @ 2024-06-25 131/week @ 2024-07-02 31/week @ 2024-07-09 12/week @ 2024-07-16 90/week @ 2024-07-23 59/week @ 2024-07-30 40/week @ 2024-08-06 26/week @ 2024-08-13 12/week @ 2024-08-20 23/week @ 2024-08-27 73/week @ 2024-09-03 153/week @ 2024-09-10 94/week @ 2024-09-17 128/week @ 2024-09-24

456 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