Linear Collections
Map and Set types backed by linear data structures.
Many use cases of maps are for small collections where the penalties of a comparable data structure from std (memory overhead, hashing throughput, indirection and potential cache dislocality of a nonlinear data structure) are greater than their comparatively reduced algorithmic complexity.
This penalty usually is not great, however, a (small) amount of performance may be gained if allocating small such structures in a tight loop - say, deserializing the claims from a Json Web Token.
Motivation
There exists another crate implementing linear collections (linear_map) however, it only supports collection backed by a vector: I personally needed Array types as well.
Future plans
I am likely going to add VecDeque types and will look into how serde supports fixed length collection types. They aren't in now as I don't immediately need them, but will be added:
- A macro based alternative for ArrayMap::new_unchecked which will statically guarantee that array literals have no duplicate keys
- Fallible allocating apis
- VecDeque backed types (nice if you need a vecdeque to be returned from into_inner())
- Serde support for Array types via serde-big-array (?)