orx_concurrent_iter/implementations/range/common_traits/
clone.rs

1use 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}