Trait IntoParallelRefIterator

trait IntoParallelRefIterator<'data>

IntoParallelRefIterator implements the conversion to a ParallelIterator, providing shared references to the data.

This is a parallel version of the iter() method defined by various collections.

This trait is automatically implemented for I where &I: IntoParallelIterator. In most cases, users will want to implement IntoParallelIterator rather than implement this trait directly.

Associated Types

type Iter: TraitBound { trait_: Path { path: "ParallelIterator", id: Id(20), args: Some(AngleBracketed { args: [], constraints: [AssocItemConstraint { name: "Item", args: None, binding: Equality(Type(QualifiedPath { name: "Item", args: None, self_type: Generic("Self"), trait_: Some(Path { path: "", id: Id(2586), args: None }) })) }] }) }, generic_params: [], modifier: None }

The type of the parallel iterator that will be returned.

type Item: TraitBound { trait_: Path { path: "Send", id: Id(6), args: None }, generic_params: [], modifier: None } + Outlives("'data")

The type of item that the parallel iterator will produce. This will typically be an &'data T reference type.

Required Methods

fn par_iter(self: &'data Self) -> <Self as >::Iter

Converts self into a parallel iterator.

Examples

use rayon::prelude::*;

let v: Vec<_> = (0..100).collect();
assert_eq!(v.par_iter().sum::<i32>(), 100 * 99 / 2);

// `v.par_iter()` is shorthand for `(&v).into_par_iter()`,
// producing the exact same references.
assert!(v.par_iter().zip(&v)
         .all(|(a, b)| std::ptr::eq(a, b)));

Implementors