use crate::{Params, computational_variants::Par, runner::DefaultRunner};
use orx_concurrent_iter::{ConcurrentIter, IntoConcurrentIter};
pub trait IntoParIter: IntoConcurrentIter {
fn into_par(self) -> Par<Self::IntoIter, DefaultRunner>;
}
impl<I> IntoParIter for I
where
I: IntoConcurrentIter,
{
fn into_par(self) -> Par<Self::IntoIter, DefaultRunner> {
Par::new(Default::default(), Params::default(), self.into_con_iter())
}
}
impl<I: ConcurrentIter> IntoConcurrentIter for Par<I, DefaultRunner> {
type Item = I::Item;
type IntoIter = I;
fn into_con_iter(self) -> Self::IntoIter {
let (_, _, iter) = self.destruct();
iter
}
}