word_vec_rs/iter.rs
1use crate::{space::VecSpace, vector::Vector};
2
3/// Iterator over all vectors in a [`VecSpace`]
4pub struct VecSpaceIter<'a> {
5 space: &'a VecSpace,
6 pos: usize,
7}
8
9impl<'a> VecSpaceIter<'a> {
10 #[inline]
11 pub(crate) fn new(space: &'a VecSpace) -> Self {
12 Self { space, pos: 0 }
13 }
14}
15
16impl<'a> Iterator for VecSpaceIter<'a> {
17 type Item = Vector<'a, 'a>;
18
19 #[inline]
20 fn next(&mut self) -> Option<Self::Item> {
21 let vec = self.space.get(self.pos)?;
22 self.pos += 1;
23 Some(vec)
24 }
25}