try_again/
delay_strategy.rs

1use crate::tracked_iterator::FiniteIterator;
2use std::fmt::Debug;
3
4/// We only implement `DelayStrategy` for any delay-yielding `FiniteIterator` by default.
5/// A `FiniteIterator` is enforced, as we want users to always specify a concrete number of retries!
6pub trait DelayStrategy<Delay>: Debug {
7    fn next_delay(&mut self) -> Option<Delay>;
8}
9
10impl<Delay, I> DelayStrategy<Delay> for FiniteIterator<I>
11where
12    I: Iterator<Item = Delay> + Debug,
13{
14    fn next_delay(&mut self) -> Option<Delay> {
15        self.next()
16    }
17}