Trait ParallelDrainRange
trait ParallelDrainRange<Idx = usize>
ParallelDrainRange creates a parallel iterator that moves a range of items
from a collection while retaining the original capacity.
Types which are not indexable may implement ParallelDrainFull instead.
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(3327), args: None }) })) }] }) }, generic_params: [], modifier: None }The draining parallel iterator type that will be created.
type Item: TraitBound { trait_: Path { path: "Send", id: Id(6), args: None }, generic_params: [], modifier: None }The type of item that the parallel iterator will produce. This is usually the same as
IntoParallelIterator::Item.
Required Methods
fn par_drain<R: RangeBounds<Idx>>(self: Self, range: R) -> <Self as >::IterReturns a draining parallel iterator over a range of the collection.
When the iterator is dropped, all items in the range are removed, even if the iterator was not fully consumed. If the iterator is leaked, for example using
std::mem::forget, it is unspecified how many items are removed.Examples
use *; let squares: = .map.collect; println!; let mut vec = squares.clone; assert!; assert!; assert!; println!; let mut vec = squares.clone; assert!; assert_eq!; assert!; println!; let mut vec = squares.clone; assert!; assert_eq!; assert!; println!; let mut vec = squares.clone; assert!; assert_eq!; assert!; println!; let mut vec = squares.clone; assert!; assert_eq!; assert_eq!; assert!; println!; let mut vec = squares.clone; assert!; assert_eq!; assert_eq!; assert!;
Implementors
impl<'data, T: Send> ParallelDrainRange for &'data mut Vec<T>impl<'a, T: Send> ParallelDrainRange for &'a mut std::collections::VecDeque<T>impl<'a> ParallelDrainRange for &'a mut String