bimap-rs
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:
toml
[dependencies]
bimap = "0.5.3"
You can now run the bimap-rs
Hello World!
```rust
fn main() {
// A bijective map between letters of the English alphabet and their positions.
let mut alphabet = bimap::BiMap::
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());
} ```
| 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.
```toml [dependencies]
bimap-rs
.bimap = "0.5.3"
bimap-rs
without the Rust standard library.bimap = { version = "0.5.3", default-features = false }
bimap-rs
with Serde support.bimap = { version = "0.5.3", 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.