pub trait Weight {
type Item;
// Required methods
fn next(&mut self) -> Option<Self::Item>;
fn add(&mut self, item: Self::Item, weight: isize);
fn all(&self) -> HashMap<Self::Item, isize>;
fn remove_all(&mut self);
fn reset(&mut self);
}