rollup

Function rollup 

Source
pub fn rollup<T, K, V, F, R>(data: &[T], key: F, reduce: R) -> HashMap<K, V>
where K: Eq + Hash, F: Fn(&T) -> K, R: Fn(&[&T]) -> V,
Expand description

Groups elements and applies a reducer to each group.

ยงExample

use d3rs::array::rollup;

let data = vec![
    ("A", 10),
    ("B", 20),
    ("A", 30),
    ("B", 40),
];

let sums = rollup(&data, |item| item.0, |group| {
    group.iter().map(|item| item.1).sum::<i32>()
});

assert_eq!(sums[&"A"], 40);
assert_eq!(sums[&"B"], 60);