backoff_config/
backoff.rs

1use backon::*;
2use std::time::Duration;
3
4#[derive(Debug)]
5/// Supported backoffs.
6pub enum Backoff {
7    /// Constant backoff.
8    Constant(ConstantBackoff),
9
10    /// Exponential backoff.
11    Exponential(ExponentialBackoff),
12
13    /// Fibonacci backoff.
14    Fibonacci(FibonacciBackoff),
15
16    /// No backoff.
17    NoBackoff,
18}
19
20impl Iterator for Backoff {
21    type Item = Duration;
22
23    fn next(&mut self) -> Option<Self::Item> {
24        match self {
25            Backoff::Constant(c) => c.next(),
26            Backoff::Exponential(e) => e.next(),
27            Backoff::Fibonacci(f) => f.next(),
28            Backoff::NoBackoff => None,
29        }
30    }
31}