fid_rs/fid/
fid_iter.rs

1use super::{Fid, FidIter};
2
3impl<'iter> Fid {
4    /// Creates an iterator over FID's bit vector.
5    ///
6    /// # Examples
7    /// ```
8    /// use fid_rs::Fid;
9    ///
10    /// let fid = Fid::from("1010_1010");
11    /// for (i, bit) in fid.iter().enumerate() {
12    ///     assert_eq!(bit, fid[i as u64]);
13    /// }
14    /// ```
15    pub fn iter(&'iter self) -> FidIter<'iter> {
16        FidIter { fid: self, i: 0 }
17    }
18}
19
20impl<'iter> Iterator for FidIter<'iter> {
21    type Item = bool;
22    fn next(&mut self) -> Option<Self::Item> {
23        if self.i >= self.fid.len() {
24            None
25        } else {
26            self.i += 1;
27            Some(self.fid[self.i - 1])
28        }
29    }
30}
31
32#[cfg(test)]
33mod iter_success_tests {
34    use crate::Fid;
35
36    #[test]
37    fn iter() {
38        let fid = Fid::from("1010_1010");
39        for (i, bit) in fid.iter().enumerate() {
40            assert_eq!(bit, fid[i as u64]);
41        }
42    }
43}
44
45#[cfg(test)]
46mod iter_failure_tests {
47    // Nothing to test
48}