| Crates.io | maglev |
| lib.rs | maglev |
| version | 0.2.1 |
| created_at | 2017-01-22 09:03:08.228842+00 |
| updated_at | 2021-10-26 02:47:37.136714+00 |
| description | Maglev - Google's consistent hashing algorithm |
| homepage | https://github.com/flier/rust-maglev |
| repository | https://github.com/flier/rust-maglev.git |
| max_upload_size | |
| id | 8165 |
| size | 26,989 |
Google's consistent hashing algorithm
To use maglev, first add this to your Cargo.toml:
[dependencies]
maglev = "0.2"
And then, use Maglev with ConsistentHasher trait
use maglev::{ConsistentHasher, Maglev};
fn main() {
let m = Maglev::new(vec!["Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"]);
assert_eq!(m["alice"], "Friday");
assert_eq!(m["bob"], "Wednesday");
// When the node list changed, ensure to use same `capacity` to rebuild
let m = Maglev::with_capacity(vec!["Monday",
// "Tuesday",
"Wednesday",
// "Thursday",
"Friday",
"Saturday",
"Sunday"],
m.capacity());
assert_eq!(m["alice"], "Friday");
assert_eq!(m["bob"], "Wednesday");
}
Maglev use std::collections::hash_map::DefaultHasher by default, we could use the given hash builder to hash keys.
use fasthash::spooky::Hash128;
use maglev::Maglev;
fn main() {
let m = Maglev::with_hasher(vec!["Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"],
Hash128 {});
assert_eq!(m["alice"], "Monday");
assert_eq!(m["bob"], "Wednesday");
}