pub struct Parallel<T>where
T: Send,{ /* private fields */ }
Expand description
A cohesive set of thread-local values of a given type.
Mutable references can be fetched if T: Default
via Parallel::scope
.
Implementations§
source§impl<T> Parallel<T>where
T: Send,
impl<T> Parallel<T>where
T: Send,
A scope guard of a Parallel
, when this struct is dropped ,the value will writeback to its Parallel
source§impl<T> Parallel<T>
impl<T> Parallel<T>
sourcepub fn scope<R>(&self, f: impl FnOnce(&mut T) -> R) -> R
pub fn scope<R>(&self, f: impl FnOnce(&mut T) -> R) -> R
Retrieves the thread-local value for the current thread and runs f
on it.
If there is no thread-local value, it will be initialized to its default.
sourcepub fn borrow_local_mut(&self) -> impl DerefMut
pub fn borrow_local_mut(&self) -> impl DerefMut
Mutably borrows the thread-local value.
If there is no thread-local value, it will be initialized to it’s default.
source§impl<T, I> Parallel<I>
impl<T, I> Parallel<I>
sourcepub fn drain(&mut self) -> impl Iterator<Item = T>
pub fn drain(&mut self) -> impl Iterator<Item = T>
Drains all enqueued items from all threads and returns an iterator over them.
Unlike Vec::drain
, this will piecemeal remove chunks of the data stored.
If iteration is terminated part way, the rest of the enqueued items in the same
chunk will be dropped, and the rest of the undrained elements will remain.
The ordering is not guaranteed.
Trait Implementations§
Auto Trait Implementations§
impl<T> !Freeze for Parallel<T>
impl<T> RefUnwindSafe for Parallel<T>
impl<T> Send for Parallel<T>
impl<T> Sync for Parallel<T>
impl<T> Unpin for Parallel<T>
impl<T> UnwindSafe for Parallel<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more