| Crates.io | attempt |
| lib.rs | attempt |
| version | 0.1.0 |
| created_at | 2022-06-22 21:03:02.52527+00 |
| updated_at | 2022-06-22 21:03:02.52527+00 |
| description | Attempt to do something over and over and over and over and... |
| homepage | |
| repository | https://github.com/TylerLafayette/attempt |
| max_upload_size | |
| id | 611147 |
| size | 12,281 |
A utility crate for retrying failable operations with various configuration options.
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
}