pub(super) fn reduce<PI, R, ID, T>(pi: PI, identity: ID, reduce_op: R) -> Twhere PI: ParallelIterator<Item = T>, R: Fn(T, T) -> T + Sync, ID: Fn() -> T + Sync, T: Send,