use std::sync::Mutex; use easy_parallel::Parallel; #[test] fn smoke() { let m = Mutex::new(0); let v = [2, 3, 5, 7, 11]; Parallel::new() .add(|| *m.lock().unwrap() += 10) .add(|| *m.lock().unwrap() += 20) .each(v.iter(), |n| *m.lock().unwrap() += *n) .run(); assert_eq!(m.into_inner().unwrap(), 10 + 20 + v.iter().sum::()); } #[test] fn squares() { let v = [10, 20, 30]; let squares = Parallel::new().each(0..v.len(), |i| v[i] * v[i]).run(); assert_eq!(squares, [100, 400, 900]); } #[test] fn finish() { let v = [10, 20, 30]; let (squares, len) = Parallel::new() .each(0..v.len(), |i| v[i] * v[i]) .finish(|| v.len()); assert_eq!(squares, [100, 400, 900]); assert_eq!(len, 3); }