Crates.io | litemap |
lib.rs | litemap |
version | 0.8.0 |
created_at | 2021-02-23 01:00:09.087357+00 |
updated_at | 2025-05-07 20:55:31.893919+00 |
description | A key-value Map implementation based on a flat, sorted Vec. |
homepage | |
repository | https://github.com/unicode-org/icu4x |
max_upload_size | |
id | 359238 |
size | 158,175 |
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.
[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 than BTreeMap
because of the flat storage.LiteMap
] can be pre-allocated whereas BTreeMap
can't.LiteMap
] has a smaller memory footprint than BTreeMap
for small collections (< 20 items).O(log(n))
like BTreeMap
.O(n)
, but optimized to O(1)
if the new item sorts greater than the current items. In BTreeMap
it's O(log(n))
.O(n)
whereas BTreeMap
is O(log(n))
.from_iter
, extend
and deserialization have an optimized O(n)
path
for inputs that are ordered and O(n*log(n))
complexity otherwise.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.
[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.
For more information on development, authorship, contributing etc. please visit ICU4X home page
.