use super::iterator::ParallelIterator;
pub trait Consumer<T>: Send + Sync {
type Result: Send;
fn consume<I>(self, iter: I) -> Self::Result
where
I: ParallelIterator<Item = T>;
fn split_at(self, index: usize) -> (Self, Self)
where
Self: Sized;
fn combine(left: Self::Result, right: Self::Result) -> Self::Result;
}
pub trait ParallelExtend<T>: Send {
fn par_extend<I>(&mut self, par_iter: I)
where
I: ParallelIterator<Item = T>;
}