nyar_collection/tuple/
iter.rs

1use super::*;
2
3impl<'i, T> Iterator for NyarTupleView<'i, T>
4where
5    T: Clone,
6{
7    type Item = &'i T;
8
9    fn next(&mut self) -> Option<Self::Item> {
10        if self.rev { self.raw.next_back() } else { self.raw.next() }
11    }
12}
13
14impl<'i, T> DoubleEndedIterator for NyarTupleView<'i, T>
15where
16    T: Clone,
17{
18    fn next_back(&mut self) -> Option<Self::Item> {
19        if self.rev { self.raw.next() } else { self.raw.next_back() }
20    }
21}
22impl<'i, T> ExactSizeIterator for NyarTupleView<'i, T> where T: Clone {}
23
24impl<'i, T> Iterator for NyarTupleEdit<'i, T>
25where
26    T: 'i + Clone,
27{
28    type Item = &'i mut T;
29
30    fn next(&mut self) -> Option<Self::Item> {
31        if self.rev { self.raw.next_back() } else { self.raw.next() }
32    }
33}
34impl<'i, T> DoubleEndedIterator for NyarTupleEdit<'i, T>
35where
36    T: 'i + Clone,
37{
38    fn next_back(&mut self) -> Option<Self::Item> {
39        if self.rev { self.raw.next() } else { self.raw.next_back() }
40    }
41}
42impl<'i, T> ExactSizeIterator for NyarTupleEdit<'i, T> where T: Clone {}