use crate::{Params, computational_variants::Par, runner::DefaultRunner};
use core::ops::RangeBounds;
use orx_concurrent_iter::ConcurrentDrainableOverSlice;
pub trait ParallelDrainableOverSlice: ConcurrentDrainableOverSlice {
fn par_drain<R>(
&mut self,
range: R,
) -> Par<<Self as ConcurrentDrainableOverSlice>::DrainingIter<'_>, DefaultRunner>
where
R: RangeBounds<usize>,
{
Par::new(Default::default(), Params::default(), self.con_drain(range))
}
}
impl<I> ParallelDrainableOverSlice for I where I: ConcurrentDrainableOverSlice {}