use dinah::compute::{for_each_batch, for_each_parallel, map, try_reduce};
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
let input = [1_u32, 2, 3, 4, 5, 6];
let squares = map(&input, |value| value * value);
println!("squares={squares:?}");
let mut percentages = [10_u32, 20, 30, 40, 50];
for_each_batch(&mut percentages, 2, |batch| {
for value in batch {
*value += 1;
}
})?;
println!("batched={percentages:?}");
let mut doubled = input;
for_each_parallel(&mut doubled, 2, |value| *value *= 2)?;
println!("parallel={doubled:?}");
let sum = try_reduce(&input, 0_u32, |total, value| {
Ok::<_, std::convert::Infallible>(total + value)
})?;
println!("sum={sum}");
Ok(())
}