/// `FlatMapIter` maps each element to a serial iterator, then flattens these iterators together. /// This struct is created by the [`flat_map_iter()`] method on [`ParallelIterator`] /// /// [`flat_map_iter()`]: trait.ParallelIterator.html#method.flat_map_iter /// [`ParallelIterator`]: trait.ParallelIterator.html #[must_use = "iterator adaptors are lazy and do nothing unless consumed"] #[derive(Clone)] pubstruct FlatMapIter<I: ParallelIterator, F> {
base: I,
map_op: F,
}
impl<'f, T, U, C, F> Consumer<T> for FlatMapIterConsumer<'f, C, F> where
C: UnindexedConsumer<U::Item>,
F: Fn(T) -> U + Sync,
U: IntoIterator,
{ type Folder = FlatMapIterFolder<'f, C::Folder, F>; type Reducer = C::Reducer; type Result = C::Result;
impl<'f, T, U, C, F> Folder<T> for FlatMapIterFolder<'f, C, F> where
C: Folder<U::Item>,
F: Fn(T) -> U,
U: IntoIterator,
{ type Result = C::Result;
fn consume(self, item: T) -> Self { let map_op = self.map_op; let base = self.base.consume_iter(map_op(item));
FlatMapIterFolder { base, map_op }
}
fn consume_iter<I>(self, iter: I) -> Self where
I: IntoIterator<Item = T>,
{ let map_op = self.map_op; let iter = iter.into_iter().flat_map(map_op); let base = self.base.consume_iter(iter);
FlatMapIterFolder { base, map_op }
}
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.