Generic abstractions for combining and nesting reduction patterns for iterables.
Docs: https//docs.rs/reductor
```rust fn processsamples( samples: &[i32], scale: &[i32], upperlimit: i32 ) { let mut sum = 0; let mut min = None; let mut max = None;
for (sample, scale) in samples.iter().zip(scale) {
let scaled = sample * scale;
if scaled <= upper_limit {
continue;
}
sum += scaled;
min = Some(match min {
Some(min) => scaled.min(min),
None => scaled,
});
max = Some(match max {
Some(max) => scaled.max(max),
None => scaled,
});
}
// ...
} ```
```rust use reductor::{Reduce, Reductors, Sum, Min, Max};
fn processsamples(
samples: &[i32],
scale: &[i32],
upperlimit: i32
) {
let Reductors((Sum::
// ...
} ```