use std::time::Duration;
pub use backon::{BackoffBuilder, Retryable};
use backon::{ConstantBuilder, ExponentialBuilder};
pub fn exponential(min: Duration, max: Duration) -> ExponentialBuilder {
ExponentialBuilder::default()
.with_min_delay(min)
.with_max_delay(max)
.with_factor(2.0)
.with_jitter()
.without_max_times()
}
pub fn exponential_bounded(min: Duration, max: Duration, max_times: usize) -> ExponentialBuilder {
exponential(min, max).with_max_times(max_times)
}
pub fn constant(delay: Duration, max_times: Option<usize>) -> ConstantBuilder {
let builder = ConstantBuilder::default().with_delay(delay);
match max_times {
Some(max_times) => builder.with_max_times(max_times),
None => builder.without_max_times(),
}
}