orx-concurrent-iter 3.3.0

A thread-safe and ergonomic concurrent iterator trait and efficient lock-free implementations.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::{ExactSizeConcurrentIter, implementations::ConIterRange};
use core::ops::Range;

impl<T> Clone for ConIterRange<T>
where
    T: Send + From<usize> + Into<usize>,
    Range<T>: Default + Clone + ExactSizeIterator<Item = T>,
{
    fn clone(&self) -> Self {
        let begin = self.begin();
        let remaining = self.len();
        let num_taken = self.initial_len() - remaining;
        let first = begin + num_taken;
        let last = first + remaining;
        let range = T::from(first)..T::from(last);
        ConIterRange::new(range)
    }
}