/// `Skip` is an iterator that skips over the first `n` elements. /// This struct is created by the [`skip()`] method on [`IndexedParallelIterator`] /// /// [`skip()`]: trait.IndexedParallelIterator.html#method.skip /// [`IndexedParallelIterator`]: trait.IndexedParallelIterator.html #[must_use = "iterator adaptors are lazy and do nothing unless consumed"] #[derive(Debug, Clone)] pubstruct Skip<I> {
base: I,
n: usize,
}
impl<I> Skip<I> where
I: IndexedParallelIterator,
{ /// Creates a new `Skip` iterator. pub(super) fn new(base: I, n: usize) -> Self { let n = Ord::min(base.len(), n);
Skip { base, n }
}
}
impl<I> ParallelIterator for Skip<I> where
I: IndexedParallelIterator,
{ type Item = I::Item;
fn drive_unindexed<C>(self, consumer: C) -> C::Result where
C: UnindexedConsumer<Self::Item>,
{
bridge(self, consumer)
}
impl<T, CB> ProducerCallback<T> for Callback<CB> where
CB: ProducerCallback<T>,
{ type Output = CB::Output; fn callback<P>(self, base: P) -> CB::Output where
P: Producer<Item = T>,
{ crate::in_place_scope(|scope| { letSelf { callback, n } = self; let (before_skip, after_skip) = base.split_at(n);
// Run the skipped part separately for side effects. // We'll still get any panics propagated back by the scope.
scope.spawn(move |_| bridge_producer_consumer(n, before_skip, NoopConsumer));
callback.callback(after_skip)
})
}
}
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-18)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.