parallel-iterator

unsafe forbidden

Parallelize any iterator!

Features

A minimal example

This code is copy-pasted from examples/example_1.rs.

```rust extern crate parallel_iterator;

use parallel_iterator::ParallelIterator;

fn dosomework(i: u32) -> u32 { i + 1 // let's pretend this is a heavy calculation }

fn main() { for i in ParallelIterator::new(|| (0u32..100), || dosomework) { println!("Got a result: {}!", i); } } ```

A slightly more realistic example

This code is copy-pasted from examples/example_2.rs.

```rust extern crate parallel_iterator;

use parallel_iterator::ParallelIterator;

fn dosomework(i: usize, out: &mut Vec) { for j in 0..i { out.push(j); // The caller can pre-allocate. } }

fn main() { const MAX: usize = 1000; let xformctor = || { let mut buffer = Vec::withcapacity(MAX); move |i| { buffer.clear(); // Clear but keep the internal allocation. dosomework(i, &mut buffer); buffer.last().map(|u| *u) // This is just an example value. } }; for i in ParallelIterator::new(|| (0..MAX), xform_ctor) { match i { Some(i) => println!("Got Some({})!", i), None => println!("Got None!"), } } } ```

Please see the documentation on the ParallelIterator struct for more details.

Changelog

0.1.6

0.1.5

0.1.4

0.1.3

0.1.2

0.1.1

0.1.0

License

Licensed under either of

at your option.