Retry with backoff without effort.
The opposite backoff implementation of the popular backoff.
Retry a blocking function.
use anyhow::Result; use backon::BlockingRetryable; use backon::ExponentialBuilder; fn fetch() -> Result<String> { Ok("hello, world!".to_string()) } fn main() -> Result<()> { let content = fetch.retry(ExponentialBuilder::default()).call()?; println!("fetch succeeded: {}", content); Ok(()) }
Retry an async function.
use anyhow::Result; use backon::ExponentialBackoff; use backon::Retryable; async fn fetch() -> Result<String> { Ok(reqwest::get("https://www.rust-lang.org").await?.text().await?) } #[tokio::main] async fn main() -> Result<()> { let content = fetch.retry(ExponentialBackoff::default()).await?; println!("fetch succeeded: {}", content); Ok(()) }
Check out the CONTRIBUTING.md guide for more details on getting started with contributing to this project.
Submit issues for bug report or asking questions in discussion.