orx_concurrent_iter/
next.rs1#[derive(Debug)]
5pub struct Next<T> {
6 pub idx: usize,
8 pub value: T,
10}
11
12impl<T: Clone> Next<&T> {
13 pub fn cloned(self) -> Next<T> {
15 Next {
16 idx: self.idx,
17 value: self.value.clone(),
18 }
19 }
20}
21
22impl<T: Copy> Next<&T> {
23 pub fn copied(self) -> Next<T> {
25 Next {
26 idx: self.idx,
27 value: *self.value,
28 }
29 }
30}
31
32pub struct NextChunk<T, Iter>
34where
35 Iter: ExactSizeIterator<Item = T>,
36{
37 pub begin_idx: usize,
39
40 pub values: Iter,
42}
43
44impl<'a, T: Clone, Iter> NextChunk<&'a T, Iter>
45where
46 Iter: ExactSizeIterator<Item = &'a T>,
47{
48 pub fn cloned(self) -> NextChunk<T, core::iter::Cloned<Iter>> {
50 NextChunk {
51 begin_idx: self.begin_idx,
52 values: self.values.cloned(),
53 }
54 }
55}
56
57impl<'a, T: Copy, Iter> NextChunk<&'a T, Iter>
58where
59 Iter: ExactSizeIterator<Item = &'a T>,
60{
61 pub fn copied(self) -> NextChunk<T, core::iter::Copied<Iter>> {
63 NextChunk {
64 begin_idx: self.begin_idx,
65 values: self.values.copied(),
66 }
67 }
68}