opt_arrayvec/
iterator_impl.rs

1use 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}