I'd like to announce tinyset 0.4, a crate that had several size optimized set types for data that are
Copy. Small sets of small values are the size of a pointer with no heap allocation, large and dense sets are stored as a bitset with a few bits per set. Sets of large and sparse integers are stored in a way that is still compressed relative to a naive hash map.
tinyset supports sets of any integer type, or any type that implements the
Fits64 trait, which any type that is Copy and can fit in 64 bits can do.
The speed of operations is at worst about ten times slower than a
HashSet, and in other cases considerably faster. The memory use is less than or equal to anything I've seen in other data types, and often dramatically less.