[][src]Struct rayon::Scope

pub struct Scope<'scope> { /* fields omitted */ }

Represents a fork-join scope which can be used to spawn any number of tasks. See scope() for more information.


impl<'scope> Scope<'scope>[src]

pub fn spawn<BODY>(&self, body: BODY) where
    BODY: FnOnce(&Scope<'scope>) + Send + 'scope, 

Spawns a job into the fork-join scope self. This job will execute sometime before the fork-join scope completes. The job is specified as a closure, and this closure receives its own reference to the scope self as argument. This can be used to inject new jobs into self.


Nothing. The spawned closures cannot pass back values to the caller directly, though they can write to local variables on the stack (if those variables outlive the scope) or communicate through shared channels.

(The intention is to eventualy integrate with Rust futures to support spawns of functions that compute a value.)


let mut value_a = None;
let mut value_b = None;
let mut value_c = None;
rayon::scope(|s| {
    s.spawn(|s1| {
          // ^ this is the same scope as `s`; this handle `s1`
          //   is intended for use by the spawned task,
          //   since scope handles cannot cross thread boundaries.

        value_a = Some(22);

        // the scope `s` will not end until all these tasks are done
        s1.spawn(|_| {
            value_b = Some(44);

    s.spawn(|_| {
        value_c = Some(66);
assert_eq!(value_a, Some(22));
assert_eq!(value_b, Some(44));
assert_eq!(value_c, Some(66));

See also

The scope function has more extensive documentation about task spawning.

Trait Implementations

impl<'scope> Debug for Scope<'scope>[src]

Auto Trait Implementations

impl<'scope> !RefUnwindSafe for Scope<'scope>

impl<'scope> Send for Scope<'scope>

impl<'scope> Sync for Scope<'scope>

impl<'scope> Unpin for Scope<'scope>

impl<'scope> !UnwindSafe for Scope<'scope>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized

impl<T> Borrow<T> for T where
    T: ?Sized

impl<T> BorrowMut<T> for T where
    T: ?Sized

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 

impl<T> Pointable for T

type Init = T

The type for initializers.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.