par_sum/par_sum.rs
1use easy_parallel::Parallel;
2
3fn par_sum(v: &[i32]) -> i32 {
4 const THRESHOLD: usize = 100;
5
6 if v.len() <= THRESHOLD {
7 v.iter().copied().sum()
8 } else {
9 let half = (v.len() + 1) / 2;
10 let sums = Parallel::new().each(v.chunks(half), par_sum).run();
11 sums.into_iter().sum()
12 }
13}
14
15fn main() {
16 let mut v = Vec::new();
17 for i in 0..10_000 {
18 v.push(i);
19 }
20
21 let sum = dbg!(par_sum(&v));
22 assert_eq!(sum, v.into_iter().sum());
23}