Struct multiset::HashMultiSet [] [src]

pub struct HashMultiSet<K> {
    // some fields omitted
}

A hash-based multiset.

Methods

impl<K> HashMultiSet<K> where K: Eq + Hash + Clone
[src]

fn new() -> Self

Creates a new empty HashMultiSet.

Examples

use multiset::HashMultiSet;

let multiset: HashMultiSet<char> = HashMultiSet::new();

fn from_vec(v: Vec<K>) -> Self

Creates a new HashMultiSet from the elements in a Vec.

Examples

Count occurrences of each char in "hello world":

use multiset::HashMultiSet;

let vals = vec!['h','e','l','l','o',' ','w','o','r','l','d'];
let multiset = HashMultiSet::from_vec(vals);

fn total_elements(&self) -> usize

Counts all the elements, including each duplicate.

Examples

A new empty HashMultiSet with 0 total elements:

use multiset::HashMultiSet;

let multiset: HashMultiSet<char> = HashMultiSet::new();
assert_eq!(0, multiset.total_elements());

A HashMultiSet from vec![1,1,2] has 3 total elements:

use multiset::HashMultiSet;

let multiset = HashMultiSet::from_vec(vec![1,1,2]);
assert_eq!(3, multiset.total_elements());

fn distinct_elements<'a>(&'a self) -> Keys<'a, K, usize>

Returns all the distinct elements in the HashMultiSet.

Examples

A HashMultiSet from vec![1,1,2] has 2 distinct elements, namely 1 and 2, but not 3:

use multiset::HashMultiSet;
use std::collections::HashSet;

let multiset = HashMultiSet::from_vec(vec![1,1,2]);
let distinct = multiset.distinct_elements().collect::<HashSet<_>>();
assert_eq!(2, distinct.len());
assert!(distinct.contains(&1));
assert!(distinct.contains(&2));
assert!(!distinct.contains(&3));

fn insert(&mut self, val: K)

Inserts an element.

Examples

Insert 1 into a new HashMultiSet:

use multiset::HashMultiSet;

let mut multiset: HashMultiSet<i32> = HashMultiSet::new();
multiset.insert(1);

fn count_of(&self, val: K) -> usize

Counts the occurrences of val.

Examples

use multiset::HashMultiSet;

let vals = vec!['h','e','l','l','o',' ','w','o','r','l','d'];
let multiset = HashMultiSet::from_vec(vals);
assert_eq!(1, multiset.count_of('h'));
assert_eq!(3, multiset.count_of('l'));
assert_eq!(0, multiset.count_of('z'));