opt_arrayvec/
iterator_impl.rs1use crate::OptArrayVec;
2
3pub struct Iter<'a, T> {
4 inner: core::slice::Iter<'a, Option<T>>,
5}
6
7impl<T, const CAP: usize> OptArrayVec<T, CAP> {
8 pub fn iter(&self) -> Iter<'_, T> {
9 Iter {
10 inner: self.inner.iter(),
11 }
12 }
13}
14
15impl<'a, T, const CAP: usize> IntoIterator for &'a OptArrayVec<T, CAP> {
16 type IntoIter = Iter<'a, T>;
17 type Item = &'a T;
18
19 fn into_iter(self) -> Self::IntoIter {
20 self.iter()
21 }
22}
23
24impl<'a, T> Iterator for Iter<'a, T> {
25 type Item = &'a T;
26
27 fn next(&mut self) -> Option<Self::Item> {
28 match self.inner.next() {
29 Some(Some(item)) => Some(item),
30 Some(None) | None => None,
31 }
32 }
33}