Crate rendezvous_hash [−] [src]
An implementation of Rendezvous (a.k.a, highest random weight) hashing algorithm.
Reference: Rendezvous hashing (Wikipedia)
Examples
use rendezvous_hash::RendezvousNodes; // Constructs a node (a.k.a., server, site, etc) set. let mut nodes = RendezvousNodes::default(); nodes.insert("foo"); nodes.insert("bar"); nodes.insert("baz"); nodes.insert("qux"); // Finds candidate nodes for an item (a.k.a., object). assert_eq!(nodes.calc_candidates(&1).collect::<Vec<_>>(), [&"bar", &"baz", &"foo", &"qux"]); assert_eq!(nodes.calc_candidates(&"key").collect::<Vec<_>>(), [&"qux", &"bar", &"foo", &"baz"]); // Update the node set. // (The relative order between existing nodes are preserved) nodes.remove(&"baz"); assert_eq!(nodes.calc_candidates(&1).collect::<Vec<_>>(), [&"bar", &"foo", &"qux"]); assert_eq!(nodes.calc_candidates(&"key").collect::<Vec<_>>(), [&"qux", &"bar", &"foo"]);
Modules
iterators |
|
Structs
Capacity |
The capacity of a node. |
DefaultNodeHasher |
The default |
HeterogeneousRendezvousNodes |
A heterogeneous candidate node set of a rendezvous for clients that are requiring the same item. |
RendezvousNodes |
A candidate node set of a rendezvous for clients that are requiring the same item. |
Traits
NodeHasher |
This trait allows calculating the hash value of a node for a specific item. |