attempt

Crates.ioattempt
lib.rsattempt
version0.1.0
sourcesrc
created_at2022-06-22 21:03:02.52527
updated_at2022-06-22 21:03:02.52527
descriptionAttempt to do something over and over and over and over and...
homepage
repositoryhttps://github.com/TylerLafayette/attempt
max_upload_size
id611147
size12,281
Tyler Lafayette (TylerLafayette)

documentation

README

attempt

Crates.io Documentation

A utility crate for retrying failable operations with various configuration options.

Example

use attempt::Attempt;

fn fetch_data_from_unreliable_api() -> Result<Data, Error> {
    // Fetch data from an API which randomly fails for no reason.
    // We've all dealt with one of these.
}

fn main() {
    let res: Result<Data, Error> =
        Attempt::to(fetch_data_from_unreliable_api)
            .delay(std::time::Duration::from_secs(1))
            .max_tries(1000)
            .run();

    // Be careful with this one.
    let res: Data =
        Attempt::infinitely(fetch_data_from_unreliable_api);

    // "Sensible" default of 10 max tries with an increasing delay between
    //  each attempt starting at 500ms.
    let res: Result<Data, Error> = Attempt::to(fetch_data_from_unreliable_api).run();
}

async fn fetch_data_from_unreliable_api_async() -> Result<Data, Error> {
    // Fetch data from an API which randomly fails for no reason, but do it async!
}

async fn async_attempt_example() -> Result<Data, Error> {
    Attempt::to(fetch_data_from_unreliable_api_async)
        .delay(std::time::Duration::from_secs(1))
        .max_tries(1000)
        .run_async()
        .await
}
Commit count: 4

cargo fmt