sum

Function sum 

Source
pub fn sum<A, T, F>(mapper: F) -> SumCollector<A, T, F>
where A: Send + Sync + 'static, T: Default + Copy + AddAssign + SubAssign + Send + Sync + 'static, F: Fn(&A) -> T + Send + Sync + 'static,
Expand description

Creates a zero-erasure collector that sums values extracted from entities.

ยงExample

use solverforge_scoring::stream::collector::{sum, UniCollector, Accumulator};

struct Item { value: i64 }

let collector = sum(|item: &Item| item.value);
let mut acc = collector.create_accumulator();

acc.accumulate(&collector.extract(&Item { value: 5 }));
acc.accumulate(&collector.extract(&Item { value: 3 }));
acc.accumulate(&collector.extract(&Item { value: 7 }));
assert_eq!(acc.finish(), 15);

acc.retract(&collector.extract(&Item { value: 3 }));
assert_eq!(acc.finish(), 12);