pub trait SetOps<T> {
fn reverse(&self) -> Self;
fn nonrepeat(&self) -> OrderedSet<T>;
fn infsup(&self) -> MinMax<T>;
fn member(&self, m: T) -> bool;
fn search(&self, m: T) -> Option<usize>;
fn position(&self, m: T) -> usize;
fn union(&self, s: &Self) -> Self;
fn intersection(&self, s: &Self) -> OrderedSet<T>;
fn difference(&self, s: &Self) -> OrderedSet<T>;
}
Expand description
Required methods for all four of the set structs.
Required Methods
fn nonrepeat(&self) -> OrderedSet<T>
fn nonrepeat(&self) -> OrderedSet<T>
Deletes any repetitions
Finds minimum, minimum’s first index, maximum, maximum’s first index
Index of the next item in order, or self.len(). Mostly for non-members. For unordered sets returns self.len(), too.
fn intersection(&self, s: &Self) -> OrderedSet<T>
fn intersection(&self, s: &Self) -> OrderedSet<T>
Intersection of two sets of the same type
fn difference(&self, s: &Self) -> OrderedSet<T>
fn difference(&self, s: &Self) -> OrderedSet<T>
Removing s from self (i.e. self-s)
Implementors
impl<T> SetOps<T> for IndexedSet<T> where
T: Copy + PartialOrd,
These are generally better than OrderedSet(s) for bulky end types, as there is not so much of moving them around.
impl<T> SetOps<T> for OrderedSet<T> where
T: Copy + PartialOrd,
impl<T> SetOps<T> for RankedSet<T> where
T: Copy + PartialOrd,
For lots of set operations, it is probably better to work in IndexedSet(s) and then only to rank the final result.