Crate vecmap

source ·
Expand description

vecmap-rs

Build Status crates.io docs.rs License: Apache 2.0 License: MIT

A vector-based ordered map and set implementation with zero dependencies and support for #![no_std].

Map keys are not required to be hashable and do not need to form a total order. Therefore, VecMap<K, V> and VecSet<T> can be used with key types which neither implement Hash nor Ord.

Since vecmap-rs is a Vec<(K, V)> under the hood, worst case lookup and insertion performance is O(n) and scales with the number of map entries. Thus, its main use case are small collections with unhashable keys.

For key types that implement Hash and Ord consider using a map or set implementation with better performance such as HashMap/HashSet and BTreeMap/BTreeSet from the standard library or popular alternatives like IndexMap/IndexSet.

Cargo features

The following features are available:

  • serde: Provides Serialize and Deserialize implementations for VecMap and VecSet. This feature is disabled by default. Enabling it will pull in serde as a dependency.

License

The source code of vecmap-rs is licensed under either of Apache License, Version 2.0 or MIT license at your option.

Modules

  • VecMap is a vector-based map implementation which retains the order of inserted entries.
  • VecSet is a vector-based set implementation which retains the order of inserted elements.

Macros

  • Create an VecMap from a list of key-value pairs
  • Create an VecSet from a list of values

Structs

  • A vector-based map implementation which retains the order of inserted entries.
  • A vector-based set implementation which retains the order of inserted elements.