orx_concurrent_iter/implementations/range/common_traits/
clone.rs1use crate::{ExactSizeConcurrentIter, implementations::ConIterRange};
2use core::ops::Range;
3
4impl<T> Clone for ConIterRange<T>
5where
6 T: Send + From<usize> + Into<usize>,
7 Range<T>: Default + Clone + ExactSizeIterator<Item = T>,
8{
9 fn clone(&self) -> Self {
10 let begin = self.begin();
11 let remaining = self.len();
12 let num_taken = self.initial_len() - remaining;
13 let first = begin + num_taken;
14 let last = first + remaining;
15 let range = T::from(first)..T::from(last);
16 ConIterRange::new(range)
17 }
18}