UniqueCollection

Trait UniqueCollection 

Source
pub trait UniqueCollection {
    type Item;

    // Required methods
    fn unique_values(&self) -> Vec<Self::Item>;
    fn n_unique_cutoff(&self, cutoff: usize) -> usize;

    // Provided methods
    fn n_unique(&self) -> usize { ... }
    fn value_map(&self) -> BTreeMap<usize, Self::Item> { ... }
}

Required Associated Types§

Required Methods§

Source

fn unique_values(&self) -> Vec<Self::Item>

Get the unique values in the collection

§Example

let xs: Vec<u8> = vec![0, 1, 2, 1, 0, 2, 1, 0, 4];

let values = xs.unique_values();

assert_eq!(values.len(), 4);
assert_eq!(values.len(), xs.n_unique());

assert!(xs.contains(&0));
assert!(xs.contains(&1));
assert!(xs.contains(&2));
assert!(xs.contains(&4));
Source

fn n_unique_cutoff(&self, cutoff: usize) -> usize

Get minimum of the number of unique values and the cutoff

§Example

let xs: Vec<u8> = vec![0, 1, 2, 1, 0, 2, 1, 0, 4];

assert_eq!(xs.n_unique_cutoff(4), 4);
assert_eq!(xs.n_unique_cutoff(10), 4);
assert_eq!(xs.n_unique_cutoff(3), 3);

Provided Methods§

Source

fn n_unique(&self) -> usize

Get the number of unique values

§Example

let xs: Vec<u8> = vec![0, 1, 2, 1, 0, 2, 1, 0, 4];

assert_eq!(xs.n_unique(), 4);
Source

fn value_map(&self) -> BTreeMap<usize, Self::Item>

Get the unique values indexed by a usize ID

§Example

let xs: Vec<u8> = vec![0, 1, 2, 1, 0, 2, 1, 0, 4];

let map = xs.value_map();

assert_eq!(map.len(), 4);
assert_eq!(map.len(), xs.n_unique());

Implementations on Foreign Types§

Source§

impl<T> UniqueCollection for &[T]
where T: Hash + Eq + Clone,

Source§

type Item = T

Source§

fn unique_values(&self) -> Vec<T>

Source§

fn n_unique_cutoff(&self, cutoff: usize) -> usize

Source§

impl<T> UniqueCollection for Vec<T>
where T: Hash + Eq + Clone,

Source§

type Item = T

Source§

fn unique_values(&self) -> Vec<T>

Source§

fn n_unique_cutoff(&self, cutoff: usize) -> usize

Implementors§