[−][src]Struct threshold::multiset::MultiSet
Methods
impl<E: Ord, C: Count> MultiSet<E, C>
[src]
pub fn new() -> Self
[src]
Returns a new MultiSet
instance.
pub fn from<I: IntoIterator<Item = (E, C)>>(iter: I) -> Self
[src]
Creates a new MultiSet
from an iterator of tuples (elem, elem count).
Examples
use threshold::*; let mset = MultiSet::from(vec![(17, 1), (23, 2)]); assert_eq!(mset.count(&17), 1); assert_eq!(mset.count(&23), 2);
pub fn add<I: IntoIterator<Item = (E, C)>>(&mut self, iter: I)
[src]
Adds several elements (each with an associated count) to the MultiSet
.
Examples
use threshold::*; let mut mset = MultiSet::new(); assert_eq!(mset.count(&17), 0); mset.add(vec![(17, 1), (23, 2)]); assert_eq!(mset.count(&17), 1); assert_eq!(mset.count(&23), 2);
pub fn add_elem(&mut self, elem: E, by: C)
[src]
Adds a single element (with an associated count) to the MultiSet
.
Examples
use threshold::*; let mut mset = MultiSet::new(); assert_eq!(mset.count(&17), 0); mset.add_elem(17, 2); assert_eq!(mset.count(&17), 2);
pub fn count(&self, elem: &E) -> C
[src]
Returns the Count
of an element.
Examples
use threshold::*; let mut mset = MultiSet::new(); assert_eq!(mset.count(&17), 0); mset.add(vec![(17, 1), (23, 1)]); assert_eq!(mset.count(&17), 1); assert_eq!(mset.count(&23), 1); assert_eq!(mset.count(&42), 0); mset.add(vec![(17, 1), (42, 1)]); assert_eq!(mset.count(&17), 2); assert_eq!(mset.count(&23), 1); assert_eq!(mset.count(&42), 1); assert_eq!(mset.count(&108), 0);
pub fn iter(&self) -> impl DoubleEndedIterator<Item = (&E, &C)>
[src]
Returns a sorted (ASC) double ended iterator.
impl<E: Ord> MultiSet<E, u64>
[src]
pub fn threshold(&self, threshold: u64) -> Vec<&E>
[src]
Returns the elements in the MultiSet
such that its multiplicity is
bigger or equal than a given threshold.
Examples
use threshold::*; let mut mset = MultiSet::new(); let empty: Vec<&u64> = Vec::new(); assert_eq!(mset.threshold(1), empty); mset.add(vec![(17, 1), (23, 1)]); assert_eq!(mset.threshold(1), vec![&17, &23]); assert_eq!(mset.threshold(2), empty); mset.add(vec![(17, 1), (42, 3)]); assert_eq!(mset.threshold(1), vec![&17, &23, &42]); assert_eq!(mset.threshold(2), vec![&17, &42]); assert_eq!(mset.threshold(3), vec![&42]); assert_eq!(mset.threshold(4), empty);
Trait Implementations
impl<E: Clone + Ord, C: Clone + Count> Clone for MultiSet<E, C>
[src]
impl<E: Debug + Ord, C: Debug + Count> Debug for MultiSet<E, C>
[src]
impl<E: Eq + Ord, C: Eq + Count> Eq for MultiSet<E, C>
[src]
impl<E: Ord, C: Count> IntoIterator for MultiSet<E, C>
[src]
type Item = (E, C)
The type of the elements being iterated over.
type IntoIter = IntoIter<E, C>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
[src]
Returns a MultiSet
into iterator.
Examples
use threshold::*; let elems_count = vec![("A", 2), ("B", 1)]; let mset = MultiSet::from(elems_count); let mut iter = mset.into_iter(); assert_eq!(Some(("A", 2)), iter.next()); assert_eq!(Some(("B", 1)), iter.next()); assert_eq!(None, iter.next());
impl<E: PartialEq + Ord, C: PartialEq + Count> PartialEq<MultiSet<E, C>> for MultiSet<E, C>
[src]
impl<E: Ord, C: Count> StructuralEq for MultiSet<E, C>
[src]
impl<E: Ord, C: Count> StructuralPartialEq for MultiSet<E, C>
[src]
Auto Trait Implementations
impl<E, C> RefUnwindSafe for MultiSet<E, C> where
C: RefUnwindSafe,
E: RefUnwindSafe,
C: RefUnwindSafe,
E: RefUnwindSafe,
impl<E, C> Send for MultiSet<E, C> where
C: Send,
E: Send,
C: Send,
E: Send,
impl<E, C> Sync for MultiSet<E, C> where
C: Sync,
E: Sync,
C: Sync,
E: Sync,
impl<E, C> Unpin for MultiSet<E, C> where
C: Unpin,
E: Unpin,
C: Unpin,
E: Unpin,
impl<E, C> UnwindSafe for MultiSet<E, C> where
C: RefUnwindSafe + UnwindSafe,
E: RefUnwindSafe + UnwindSafe,
C: RefUnwindSafe + UnwindSafe,
E: RefUnwindSafe + UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<I> IntoIterator for I where
I: Iterator,
[src]
I: Iterator,
type Item = <I as Iterator>::Item
The type of the elements being iterated over.
type IntoIter = I
Which kind of iterator are we turning this into?
fn into_iter(self) -> I
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,