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}