bidimap 0.7.0

Bijective maps
Documentation

bidimap

version documentation license

bidimap is a pure Rust library for dealing with bijective maps, aiming to feel like an extension of the standard library's data structures whenever possible. There are no external dependencies by default but Serde and no_std compatibility are available through feature flags.

This is a maintained fork of bimap.

  1. Quick start
  2. Feature flags
  3. Documentation
  4. Semantic versioning
  5. Minimum supported Rust version
  6. License

Quick start

To use the latest version of bidimap with the default features, add this to your project's Cargo.toml file:

[dependencies]
bidimap = "0.7"

You can now run the bidimap Hello World!

fn main() {
    // A bijective map between letters of the English alphabet and their positions.
    let mut alphabet = bidimap::BiMap::<char, u8>::new();

    alphabet.insert('A', 1);
    // ...
    alphabet.insert('Z', 26);

    println!("A is at position {}", alphabet.get_by_left(&'A').unwrap());
    println!("{} is at position 26", alphabet.get_by_right(&26).unwrap());
}

Feature flags

Flag name Description Enabled by default?
std Standard library usage (HashMap) yes
serde (De)serialization using Serde no

This Cargo.toml shows how these features can be enabled and disabled.

[dependencies]
# I just want to use `bidimap`.
bidimap = "0.7"

# I want to use `bidimap` without the Rust standard library.
bidimap = { version = "0.7", default-features = false }

# I want to use `bidimap` with Serde support.
bidimap = { version = "0.7", features = ["serde"] }

Custom hashers

BiHashMap supports custom hashers for each side of the bimap independently, just like the standard library's HashMap. This is useful when you want to use a faster or deterministic hasher such as fnv or ahash.

use bidimap::BiHashMap;
use std::collections::hash_map::RandomState;

let s_left = RandomState::new();
let s_right = RandomState::new();
let mut bimap = BiHashMap::<char, i32>::with_hashers(s_left, s_right);
bimap.insert('a', 1);

See BiHashMap::with_hashers and BiHashMap::with_capacity_and_hashers for details.

Documentation

Documentation for the latest version of bidimap is available on docs.rs.

Semantic versioning

bidimap adheres to the de-facto Rust variety of Semantic Versioning.

Minimum supported Rust version

bidimap MSRV
v0.7.0 1.85.0

License

bidimap is dual-licensed under the Apache License and the MIT License. As a library user, this means that you are free to choose either license when using bidimap. As a library contributor, this means that any work you contribute to bidimap will be similarly dual-licensed.