[][src]Function consistent_hash_ring::migrated_ranges

pub fn migrated_ranges<'a, T: Hash + Eq + Clone, S: BuildHasher>(
    src: &'a Ring<T, S>,
    dst: &'a Ring<T, S>
) -> impl Iterator<Item = Migrated<'a, T>> + 'a

Returns an iterator over any hash ranges in src that map to a different node in dst.

use consistent_hash_ring::*;

let src = RingBuilder::default()
    .nodes_iter(vec!["foo", "bar"])
    .vnodes(1)
    .build();

let dst = RingBuilder::default()
    .nodes_iter(vec!["foo", "bar", "Baz"])
    .vnodes(1)
    .build();

let m = migrated_ranges(&src, &dst).next().unwrap();

// keys whose hashes fall in this range map to foo in src, and Baz in dst.
assert_eq!(*m.keys(), 11131327745321301792..=13944671288569533511);
assert_eq!(*m.src(), "foo");
assert_eq!(*m.dst(), "Baz");