pub(crate) struct DrainProducer<'data, T: Send> {
    slice: &'data mut [T],
}Fields§
§slice: &'data mut [T]Implementations§
Source§impl<T: Send> DrainProducer<'_, T>
 
impl<T: Send> DrainProducer<'_, T>
Sourcepub(crate) unsafe fn new(slice: &mut [T]) -> DrainProducer<'_, T>
 
pub(crate) unsafe fn new(slice: &mut [T]) -> DrainProducer<'_, T>
Creates a draining producer, which moves items from the slice.
Unsafe because !Copy data must not be read after the borrow is released.
Sourceunsafe fn from_vec(vec: &mut Vec<T>, len: usize) -> DrainProducer<'_, T>
 
unsafe fn from_vec(vec: &mut Vec<T>, len: usize) -> DrainProducer<'_, T>
Creates a draining producer, which moves items from the tail of the vector.
Unsafe because we’re moving from beyond vec.len(), so the caller must ensure
that data is initialized and not read after the borrow is released.
Trait Implementations§
Source§impl<'data, T: 'data + Send> Drop for DrainProducer<'data, T>
 
impl<'data, T: 'data + Send> Drop for DrainProducer<'data, T>
Source§impl<'data, T: 'data + Send> Producer for DrainProducer<'data, T>
 
impl<'data, T: 'data + Send> Producer for DrainProducer<'data, T>
Source§type Item = T
 
type Item = T
The type of item that will be produced by this producer once
it is converted into an iterator.
Source§type IntoIter = SliceDrain<'data, T>
 
type IntoIter = SliceDrain<'data, T>
The type of iterator we will become.
Source§fn into_iter(self) -> Self::IntoIter
 
fn into_iter(self) -> Self::IntoIter
Convert 
self into an iterator; at this point, no more parallel splits
are possible.Source§fn split_at(self, index: usize) -> (Self, Self)
 
fn split_at(self, index: usize) -> (Self, Self)
Split into two producers; one produces items 
0..index, the
other index..N. Index must be less than or equal to N.Source§fn min_len(&self) -> usize
 
fn min_len(&self) -> usize
The minimum number of items that we will process
sequentially. Defaults to 1, which means that we will split
all the way down to a single item. This can be raised higher
using the 
with_min_len method, which will force us to
create sequential tasks at a larger granularity. Note that
Rayon automatically normally attempts to adjust the size of
parallel splits to reduce overhead, so this should not be
needed.Source§fn max_len(&self) -> usize
 
fn max_len(&self) -> usize
The maximum number of items that we will process
sequentially. Defaults to MAX, which means that we can choose
not to split at all. This can be lowered using the
with_max_len method, which will force us to create more
parallel tasks. Note that Rayon automatically normally
attempts to adjust the size of parallel splits to reduce
overhead, so this should not be needed.Auto Trait Implementations§
impl<'data, T> Freeze for DrainProducer<'data, T>
impl<'data, T> RefUnwindSafe for DrainProducer<'data, T>where
    T: RefUnwindSafe,
impl<'data, T> Send for DrainProducer<'data, T>
impl<'data, T> Sync for DrainProducer<'data, T>where
    T: Sync,
impl<'data, T> Unpin for DrainProducer<'data, T>
impl<'data, T> !UnwindSafe for DrainProducer<'data, T>
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
Mutably borrows from an owned value. Read more
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> ⓘ
Converts 
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> ⓘ
Converts 
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