pub trait AssocSet<X, Y: Clone + Default> {
fn get(&self, target: X) -> Y;
fn set(&mut self, key: X, val: Y);
}
pub trait MemberSet<T> {
type MemberIter<'a>: Iterator<Item = T>
where
Self: 'a;
fn contains(&self, target: T) -> bool;
fn iter(&self) -> Self::MemberIter<'_>;
fn insert(&mut self, target: T);
}
#[cfg(feature = "materialized_idf")]
pub trait MergeSet<T>: MemberSet<T> {
fn subset(&self, other: &Self) -> bool;
fn union(&mut self, other: &Self);
}