#![allow(dead_code)]
pub trait ParSliceIter<T> {
fn par_iter(&self) -> core::slice::Iter<'_, T>;
fn par_iter_mut(&mut self) -> core::slice::IterMut<'_, T>;
}
impl<T> ParSliceIter<T> for [T] {
#[inline]
fn par_iter(&self) -> core::slice::Iter<'_, T> {
self.iter()
}
#[inline]
fn par_iter_mut(&mut self) -> core::slice::IterMut<'_, T> {
self.iter_mut()
}
}
pub trait IntoParIterSeq {
type Iter: Iterator;
fn into_par_iter(self) -> Self::Iter;
}
impl<T> IntoParIterSeq for Vec<T> {
type Iter = std::vec::IntoIter<T>;
#[inline]
fn into_par_iter(self) -> Self::Iter {
self.into_iter()
}
}
impl IntoParIterSeq for std::ops::Range<usize> {
type Iter = std::ops::Range<usize>;
#[inline]
fn into_par_iter(self) -> Self::Iter {
self
}
}
pub trait SeqParTuning: Iterator + Sized {
#[inline]
fn with_min_len(self, _len: usize) -> Self {
self
}
#[inline]
fn with_max_len(self, _len: usize) -> Self {
self
}
}
impl<I: Iterator> SeqParTuning for I {}