Struct Scope
pub struct Scope<'scope> { /* private fields */ }
Represents a fork-join scope which can be used to spawn any number of tasks.
See [scope()] for more information.
Implementations
impl<'scope> Scope<'scope>
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 scopeselfas argument. This can be used to inject new jobs intoself.Returns
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 eventually integrate with Rust futures to support spawns of functions that compute a value.)
Examples
# use rayon_core as rayon; let mut value_a = None; let mut value_b = None; let mut value_c = None; scope; assert_eq!; assert_eq!; assert_eq!;See also
The
scopefunction has more extensive documentation about task spawning.fn spawn_broadcast<BODY>(&self, body: BODY) where BODY: Fn(&Scope<'scope>, BroadcastContext<'_>) + Send + Sync + 'scope,Spawns a job into every thread of the fork-join scope
self. This job will execute on each thread sometime before the fork-join scope completes. The job is specified as a closure, and this closure receives its own reference to the scopeselfas argument, as well as aBroadcastContext.
Trait Implementations
impl<'scope> Debug for Scope<'scope>
fn fmt(&self, fmt: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl<'scope> !Freeze for Scope<'scope>
impl<'scope> !RefUnwindSafe for Scope<'scope>
impl<'scope> !UnwindSafe for Scope<'scope>
impl<'scope> Send for Scope<'scope>
impl<'scope> Sync for Scope<'scope>
impl<'scope> Unpin for Scope<'scope>
impl<'scope> UnsafeUnpin for Scope<'scope>
Blanket Implementations
impl<T> Any for Scope<'scope>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Scope<'scope>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Scope<'scope>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for Scope<'scope>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> Pointable for Scope<'scope>
const ALIGN: usize = _;type Init = T;unsafe fn init(init: <T as Pointable>::Init) -> usizeunsafe fn deref<'a>(ptr: usize) -> &'a Tunsafe fn deref_mut<'a>(ptr: usize) -> &'a mut Tunsafe fn drop(ptr: usize)
impl<T, U> Into<U> for Scope<'scope>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Scope<'scope>
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Scope<'scope>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>