pub trait ParallelBridge: Sized {
    fn par_bridge(self) -> IterBridge<Self>;
}
Expand description

Conversion trait to convert an Iterator to a ParallelIterator.

This creates a “bridge” from a sequential iterator to a parallel one, by distributing its items across the Rayon thread pool. This has the advantage of being able to parallelize just about anything, but the resulting ParallelIterator can be less efficient than if you started with par_iter instead. However, it can still be useful for iterators that are difficult to parallelize by other means, like channels or file or network I/O.

The resulting iterator is not guaranteed to keep the order of the original iterator.

Examples

To use this trait, take an existing Iterator and call par_bridge on it. After that, you can use any of the ParallelIterator methods:

use rayon::iter::ParallelBridge;
use rayon::prelude::ParallelIterator;
use std::sync::mpsc::channel;

let rx = {
    let (tx, rx) = channel();

    tx.send("one!");
    tx.send("two!");
    tx.send("three!");

    rx
};

let mut output: Vec<&'static str> = rx.into_iter().par_bridge().collect();
output.sort_unstable();

assert_eq!(&*output, &["one!", "three!", "two!"]);

Required Methods§

source

fn par_bridge(self) -> IterBridge<Self>

Creates a bridge from this type to a ParallelIterator.

Implementors§

source§

impl<T> ParallelBridge for Twhere
    T: Iterator + Send,
    <T as Iterator>::Item: Send,