Sunbeam Studios

Our open-source projects, here for you!

litemap (0.8.1)

Published 2026-03-26 10:33:46 +00:00 by siennathesane

Installation

[registry]
default = "gitea"

[registries.gitea]
index = "sparse+" # Sparse index
# index = "" # Git

[net]
git-fetch-with-cli = true
cargo add litemap@0.8.1

About this package

A key-value Map implementation based on a flat, sorted Vec.

litemap crates.io

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 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).
  • Lookup is O(log(n)) like BTreeMap.
  • Insertion is generally O(n), but optimized to O(1) if the new item sorts greater than the current items. In BTreeMap it's O(log(n)).
  • Deletion is O(n) whereas BTreeMap is O(log(n)).
  • Bulk operations like from_iter, extend and deserialization have an optimized O(n) path for inputs that are ordered and O(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

Keywords

sorted vec map hashmap btreemap
Details
Cargo
2026-03-26 10:33:46 +00:00
0
The ICU4X Project Developers
Unicode-3.0
33 KiB
Assets (1)
Versions (1) View all
0.8.1 2026-03-26