bimap-rs
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.
To use the latest version of bimap-rs
with the default features, add this to
your project's Cargo.toml
file:
[dependencies]
bimap = "0.5.2"
You can now run the bimap-rs
Hello World!
fn main() {
// A bijective map between letters of the English alphabet and their positions.
let mut alphabet = bimap::BiMap::<char, u8>::new();
alphabet.insert('A', 1);
// some letters omitted for brevity
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());
}
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 `bimap-rs`.
bimap = "0.5.2"
# I want to use `bimap-rs` without the Rust standard library.
bimap = { version = "0.5.2", default-features = false }
# I want to use `bimap-rs` with Serde support.
bimap = { version = "0.5.2", features = ["serde"] }
Documentation for the latest version of bimap-rs
is available on docs.rs.
Thank you for your interest in improving bimap-rs
! Please read the code of
conduct and the contributing guidelines before submitting an issue or
opening a pull request.
bimap-rs
adheres to the de-facto Rust variety of Semantic Versioning.
bimap-rs
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 bimap-rs
. As a library contributor, this means that any work you
contribute to bimap-rs
will be similarly dual-licensed.