try_again/delay/
none.rs

1use crate::StdDuration;
2use crate::tracked_iterator::{FiniteIterator, IntoTrackedIterator};
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub struct None;
6
7impl None {
8    pub fn take(self, count: usize) -> FiniteIterator<std::iter::Take<None>> {
9        self.into_tracked().take(count)
10    }
11}
12
13impl Iterator for None {
14    type Item = StdDuration;
15
16    fn next(&mut self) -> Option<Self::Item> {
17        Some(StdDuration::ZERO)
18    }
19}
20
21#[cfg(test)]
22mod test {
23    use super::*;
24    use assertr::prelude::*;
25
26    #[test]
27    fn no_delay_strategy_always_returns_zero_duration() {
28        let mut delay = None.take(3);
29
30        assert_that(delay.next())
31            .is_some()
32            .is_equal_to(StdDuration::ZERO);
33        assert_that(delay.next())
34            .is_some()
35            .is_equal_to(StdDuration::ZERO);
36        assert_that(delay.next())
37            .is_some()
38            .is_equal_to(StdDuration::ZERO);
39        assert_that(delay.next()).is_none();
40    }
41}