Expand description
§litemap
litemap
is a crate providing LiteMap
, a highly simplistic “flat” key-value map
based off of a single sorted vector.
The main goal of this crate is to provide a map that is good enough for small
sizes, and does not carry the binary size impact of HashMap
or BTreeMap
.
If binary size is not a concern, std::collections::BTreeMap
may be a better choice
for your use case. It behaves very similarly to LiteMap
for less than 12 elements,
and upgrades itself gracefully for larger inputs.
§Performance characteristics
LiteMap
is a data structure with similar characteristics as std::collections::BTreeMap
but
with slightly different trade-offs as it’s implemented on top of a flat storage (e.g. Vec).
LiteMap
iteration is generally faster thanBTreeMap
because of the flat storage.LiteMap
can be pre-allocated whereasBTreeMap
can’t.LiteMap
has a smaller memory footprint thanBTreeMap
for small collections (< 20 items).- Lookup is
O(log(n))
likeBTreeMap
. - Insertion is generally
O(n)
, but optimized toO(1)
if the new item sorts greater than the current items. InBTreeMap
it’sO(log(n))
. - Deletion is
O(n)
whereasBTreeMap
isO(log(n))
. - Bulk operations like
from_iter
,extend
and deserialization have an optimizedO(n)
path for inputs that are ordered andO(n*log(n))
complexity otherwise.
§Pluggable Backends
By default, LiteMap
is backed by a Vec
; however, it can be backed by any appropriate
random-access data store, giving that data store a map-like interface. See the store
module for more details.
§Const construction
LiteMap
supports const construction from any store that is const-constructible, such as a
static slice, via LiteMap::from_sorted_store_unchecked()
. This also makes LiteMap
suitable for use with [databake
]. See impl Bake for LiteMap
for more details.
Modules§
- store
- Traits for pluggable LiteMap backends.
- testing
- Test utilities, primarily targeted to custom LiteMap stores.
Structs§
- LiteMap
- A simple “flat” map based on a sorted vector
- Occupied
Entry - A view into an occupied entry in a
LiteMap
. - Vacant
Entry - A view into a vacant entry in a
LiteMap
.
Enums§
- Entry
- An entry in a
LiteMap
, which may be either occupied or vacant.