example_2/
example_2.rs

1extern crate parallel_iterator;
2
3use parallel_iterator::ParallelIterator;
4
5fn do_some_work(i: usize, out: &mut Vec<usize>) {
6    for j in 0..i {
7        out.push(j); // The caller can pre-allocate.
8    }
9}
10
11fn main() {
12    const MAX: usize = 1000;
13    let xform_ctor = || {
14        let mut buffer = Vec::with_capacity(MAX);
15        move |i| {
16            buffer.clear(); // Clear but keep the internal allocation.
17            do_some_work(i, &mut buffer);
18            buffer.last().map(|u| *u) // This is just an example value.
19        }
20    };
21    for i in ParallelIterator::new(|| (0..MAX), xform_ctor) {
22        match i {
23            Some(i) => println!("Got Some({})!", i),
24            None => println!("Got None!"),
25        }
26    }
27}