pub struct ConsistentHashRouter<T: Node + Clone> { /* private fields */ }Expand description
Consistent hash ring with a fixed number of virtual nodes per physical node.
Implementations§
Source§impl<T: Node + Clone> ConsistentHashRouter<T>
impl<T: Node + Clone> ConsistentHashRouter<T>
pub fn new(physical_nodes: Vec<T>, virtual_node_count: i32) -> Self
pub fn try_new(physical_nodes: Vec<T>, virtual_node_count: i32) -> Result<Self>
pub fn new_with_hash_function( physical_nodes: Vec<T>, virtual_node_count: i32, hash_function: Arc<dyn HashFunction>, ) -> Self
pub fn try_new_with_hash_function( physical_nodes: Vec<T>, virtual_node_count: i32, hash_function: Arc<dyn HashFunction>, ) -> Result<Self>
pub fn add_node(&mut self, physical_node: T, virtual_node_count: i32)
pub fn try_add_node( &mut self, physical_node: T, virtual_node_count: i32, ) -> Result<()>
pub fn remove_node(&mut self, physical_node: &T)
pub fn route_node_ref(&self, object_key: &str) -> Option<&T>
pub fn route_node(&self, object_key: &str) -> Option<T>
pub fn get_existing_replicas(&self, physical_node: &T) -> i32
pub fn size(&self) -> usize
pub fn is_empty(&self) -> bool
Trait Implementations§
Auto Trait Implementations§
impl<T> !RefUnwindSafe for ConsistentHashRouter<T>
impl<T> !Send for ConsistentHashRouter<T>
impl<T> !Sync for ConsistentHashRouter<T>
impl<T> !UnwindSafe for ConsistentHashRouter<T>
impl<T> Freeze for ConsistentHashRouter<T>
impl<T> Unpin for ConsistentHashRouter<T>
impl<T> UnsafeUnpin for ConsistentHashRouter<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more