pub struct ExponentialBuilder { /* private fields */ }
Expand description
ExponentialBuilder is used to construct an [ExponentialBackoff
] that offers delays with exponential retries.
§Default
- jitter: false
- factor: 2
- min_delay: 1s
- max_delay: 60s
- max_times: 3
§Examples
use anyhow::Result;
use backon::ExponentialBuilder;
use backon::Retryable;
async fn fetch() -> Result<String> {
Ok(reqwest::get("https://www.rust-lang.org")
.await?
.text()
.await?)
}
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<()> {
let content = fetch.retry(ExponentialBuilder::default()).await?;
println!("fetch succeeded: {}", content);
Ok(())
}
Implementations§
Source§impl ExponentialBuilder
impl ExponentialBuilder
Sourcepub fn with_jitter(self) -> Self
pub fn with_jitter(self) -> Self
Set the jitter for the backoff.
When jitter is enabled, [ExponentialBackoff
] will add a random jitter within (0, min_delay)
to the current delay.
Sourcepub fn with_factor(self, factor: f32) -> Self
pub fn with_factor(self, factor: f32) -> Self
Set the factor for the backoff.
§Panics
This function will panic if the input factor is less than 1.0
.
Sourcepub fn with_min_delay(self, min_delay: Duration) -> Self
pub fn with_min_delay(self, min_delay: Duration) -> Self
Set the minimum delay for the backoff.
Sourcepub fn with_max_delay(self, max_delay: Duration) -> Self
pub fn with_max_delay(self, max_delay: Duration) -> Self
Set the maximum delay for the backoff.
The delay will not increase if the current delay exceeds the maximum delay.
Sourcepub fn without_max_delay(self) -> Self
pub fn without_max_delay(self) -> Self
Set no maximum delay for the backoff.
The delay will keep increasing.
The delay will saturate at Duration::MAX
which is an unrealistic delay.
Sourcepub fn with_max_times(self, max_times: usize) -> Self
pub fn with_max_times(self, max_times: usize) -> Self
Set the maximum number of attempts for the current backoff.
The backoff will stop if the maximum number of attempts is reached.
Sourcepub fn without_max_times(self) -> Self
pub fn without_max_times(self) -> Self
Set no maximum number of attempts for the current backoff.
The backoff will not stop by itself.
The backoff could stop reaching usize::MAX
attempts but this is unrealistic.
Trait Implementations§
Source§impl BackoffBuilder for &ExponentialBuilder
impl BackoffBuilder for &ExponentialBuilder
Source§impl BackoffBuilder for ExponentialBuilder
impl BackoffBuilder for ExponentialBuilder
Source§impl Clone for ExponentialBuilder
impl Clone for ExponentialBuilder
Source§fn clone(&self) -> ExponentialBuilder
fn clone(&self) -> ExponentialBuilder
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more