#element #fork-of-original #size #internal #small-vec #fork-original #cache-friendly #unordered-set

smolset

" An unordered set of elements optimized for small sizes. This is a fork of the original library with overhauled internals, better fallback perforamance (O(1) insert and find) and more features!

6 stable releases

Uses old Rust 2015

1.3.1 Sep 3, 2021
1.3.0 Jun 6, 2021
1.2.0 May 20, 2021
1.1.0 Aug 19, 2020

#1331 in Data structures

Download history 527/week @ 2025-08-28 379/week @ 2025-09-04 678/week @ 2025-09-11 651/week @ 2025-09-18 345/week @ 2025-09-25 155/week @ 2025-10-02 419/week @ 2025-10-09 422/week @ 2025-10-16 543/week @ 2025-10-23 457/week @ 2025-10-30 754/week @ 2025-11-06 656/week @ 2025-11-13 773/week @ 2025-11-20 551/week @ 2025-11-27 289/week @ 2025-12-04 263/week @ 2025-12-11

2,050 downloads per month
Used in 6 crates (3 directly)

MIT license

24KB
547 lines

SmolSet

Crate

This crate implements a small unordered-set data structure implemented using smallvec. It initially stores set elements in a simple unordered array. When the set is smaller than a parameterizable size, no allocations will be performed. The data structure is thus very space-efficient for sets of only a few elements, much more so than a tree-based or hash-table-based set data structure. It is also fast when the set is small: queries and inserts perform a linear scan, which is more cache-friendly than a pointer-chasing search through a tree.

However, as the set grows, it will transform internally into a std::collections::HashSet.

Note

This is a fork of the original library here: rust-smallset. I have rewritten the internals completely to not have such a bad fallback mode and added more features (and their tests and documentations).

Dependencies

~79KB