1use std::{marker::PhantomData, ops::Index};
2
3/// Internal class used to iterate over a [`QList`][]
4///
5/// [`QList`]: https://doc.qt.io/qt-5/qlist.html
6pub struct QListIterator<'a, T, I>
7where
8 T: Index<usize, Output = I>,
9{
10 list: &'a T,
11 index: usize,
12 size: usize,
13 item: PhantomData<&'a I>,
14}
15
16impl<'a, T, I> QListIterator<'a, T, I>
17where
18 T: Index<usize, Output = I>,
19{
20 pub fn new(list: &'a T, index: usize, size: usize) -> Self {
21 Self { list, index, size, item: PhantomData }
22 }
23}
24
25impl<'a, T, I> Iterator for QListIterator<'a, T, I>
26where
27 T: Index<usize, Output = I>,
28{
29 type Item = &'a I;
30
31 fn next(&mut self) -> Option<Self::Item> {
32 if self.index == self.size {
33 None
34 } else {
35 self.index += 1;
36 Some(&self.list[self.index - 1])
37 }
38 }
39}
40