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}