3 releases
Uses new Rust 2024
| 0.1.2 | Aug 15, 2025 |
|---|---|
| 0.1.1 | Aug 15, 2025 |
| 0.1.0 | Aug 14, 2025 |
#2382 in Algorithms
233 downloads per month
10KB
198 lines
Rendezvous (HRW) hashing over a node set with a pluggable hasher.
Example
This example demonstrates creating a Rendezvous set, adding and removing nodes, and picking a node for a key.
use hrw::Rendezvous;
let mut r = Rendezvous::from_nodes(["A", "B"]);
assert_eq!(r.len(), 2);
r.add_node("C");
assert_eq!(r.len(), 3);
r.remove_node(&"B");
assert_eq!(r.len(), 2);
let chosen = r.pick_top(&"my-key");
assert!(chosen.is_some());
hrw
A simple, generic implementation of Highest Random Weight (HRW or Rendezvous) hashing in Rust.
Features
- Deterministic node selection for any key
- Pluggable hashers (e.g.,
ahash,std) - Add/remove nodes at runtime
- No external dependencies for core logic
Example
use hrw::Rendezvous;
let mut r = Rendezvous::from_nodes(["A", "B"]);
assert_eq!(r.len(), 2);
r.add_node("C");
assert_eq!(r.len(), 3);
r.remove_node(&"B");
assert_eq!(r.len(), 2);
let chosen = r.pick_top(&"my-key");
assert!(chosen.is_some());
License
MIT