Function rayon::iter::collect::special_extend
source · pub(super) fn special_extend<I, T>(pi: I, len: usize, v: &mut Vec<T>)where
I: ParallelIterator<Item = T>,
T: Send,
Expand description
Collects the results of the iterator into the specified vector.
Technically, this only works for IndexedParallelIterator
, but we’re faking a
bit of specialization here until Rust can do that natively. Callers are
using opt_len
to find the length before calling this, and only exact
iterators will return anything but None
there.
Since the type system doesn’t understand that contract, we have to allow
any ParallelIterator
here, and CollectConsumer
has to also implement
UnindexedConsumer
. That implementation panics unreachable!
in case
there’s a bug where we actually do try to use this unindexed.