litemap (0.8.1)
Installation
[registry]
default = "gitea"
[registries.gitea]
index = "sparse+ " # Sparse index
# index = " " # Git
[net]
git-fetch-with-cli = truecargo add litemap@0.8.1About this package
litemap 
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 thanBTreeMapbecause of the flat storage. - [
LiteMap] can be pre-allocated whereasBTreeMapcan't. - [
LiteMap] has a smaller memory footprint thanBTreeMapfor 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. InBTreeMapit'sO(log(n)). - Deletion is
O(n)whereasBTreeMapisO(log(n)). - Bulk operations like
from_iter,extendand 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.
More Information
For more information on development, authorship, contributing etc. please visit ICU4X home page.
Dependencies
| ID | Version |
|---|---|
| databake | ^0.2.0 |
| serde_core | ^1.0.220 |
| yoke | ^0.8.0 |
| bincode | ^1.3.1 |
| postcard | ^1.0.3 |
| rand | ^0.9 |
| rkyv | ^0.7 |
| serde_core | ^1.0.220 |
| serde_json | ^1.0.45 |
| criterion | ^0.5.0 |