use easy_parallel::Parallel; | |
fn par_sum(v: &[i32]) -> i32 { | |
const THRESHOLD: usize = 100; | |
if v.len() <= THRESHOLD { | |
v.iter().copied().sum() | |
} else { | |
let half = (v.len() + 1) / 2; | |
let sums = Parallel::new().each(v.chunks(half), par_sum).run(); | |
sums.into_iter().sum() | |
} | |
} | |
fn main() { | |
let mut v = Vec::new(); | |
for i in 0..10_000 { | |
v.push(i); | |
} | |
let sum = dbg!(par_sum(&v)); | |
assert_eq!(sum, v.into_iter().sum()); | |
} |