backoff-futures

Build status crates.io docs.rs License: MIT

A retry and backoff mechanism for std::future::Future.

Documentation

Adding as a dependency

Manually

toml [dependencies] backoff-futures = "0.1"

With cargo-edit

cargo add backoff-futures

Usage

```rust

![feature(async_await)]

fn isahcerrortobackoff(err: isahc::Error) -> backoff::Error { match err { isahc::Error::Aborted | isahc::Error::Io() | isahc::Error::Timeout => backoff::Error::Transient(err), _ => backoff::Error::Permanent(err) } }

async fn getexamplecontents() -> Result> { use isahc::ResponseExt;

let mut response = isahc::get_async("https://example.org")
    .await
    .map_err(isahc_error_to_backoff)?;

response
    .text_async()
    .await
    .map_err(|err: std::io::Error| backoff::Error::Transient(isahc::Error::Io(err)))

}

async fn getexamplecontentswithretry() -> Result { use backoff_futures::BackoffExt;

let mut backoff = backoff::ExponentialBackoff::default();
get_example_contents.with_backoff(&mut backoff)
    .await
    .map_err(|err| match err {
        backoff::Error::Transient(err) | backoff::Error::Permanent(err) => err
    })

} ```

License

MIT