Scaffold
use std::collections::BTreeMap;
struct ConsistentHashRing {
ring: BTreeMap<u64, String>,
virtual_nodes: usize,
}
impl ConsistentHashRing {
fn add_node(&mut self, name: &str) { ... }
fn remove_node(&mut self, name: &str) { ... }
fn get_node(&self, key: &str) -> Option<&str> {
let hash = self.hash(key);
self.ring.range(hash..)
.next()
.or_else(|| self.ring.iter().next())
.map(|(_, name)| name.as_str())
}
fn hash(&self, key: &str) -> u64 { ... }
}