moirai_iter/parallel/traits/
consumer.rs1use super::iterator::ParallelIterator;
2
3pub trait Consumer<T>: Send + Sync {
5 type Result: Send;
7
8 fn consume<I>(self, iter: I) -> Self::Result
10 where
11 I: ParallelIterator<Item = T>;
12
13 fn split_at(self, index: usize) -> (Self, Self)
15 where
16 Self: Sized;
17
18 fn combine(left: Self::Result, right: Self::Result) -> Self::Result;
20}
21
22pub trait ParallelExtend<T>: Send {
24 fn par_extend<I>(&mut self, par_iter: I)
26 where
27 I: ParallelIterator<Item = T>;
28}