mod r#usize;
#[allow(clippy::len_without_is_empty)]
pub trait Set {
type Item: Clone + Ord;
type Map<V>: Map<Self::Item, V>;
type Iter<'a>: 'a + Iterator<Item = Self::Item>
where
Self: 'a;
fn len(&self) -> usize;
fn iter(&self) -> Self::Iter<'_>;
fn map<V: Clone, F>(&self, f: F) -> Self::Map<V>
where
F: Fn(&Self::Item) -> V;
}
pub trait Map<K, T> {
fn len(&self) -> usize;
fn is_empty(&self) -> bool {
self.len() == 0
}
fn get(&self, key: &K) -> Option<&T>;
fn set(&mut self, key: &K, value: T);
fn map<F>(&mut self, f: F)
where
F: Fn(&K, T) -> T;
}