retry

Macro retry 

Source
macro_rules! retry {
    ($e:expr) => { ... };
}
Expand description

Retries a given expression a specified number of times with exponential backoff.

This macro attempts to execute the provided expression up to N times, where N is the value set by set_retries. If the expression returns Ok, it returns the value. If the expression returns Err, it logs a warning and retries after a delay that increases exponentially with each retry.

The delay between retries is calculated as 1 * retry_cnt.pow(2) seconds, where retry_cnt is the current retry attempt.

This macro supports both asynchronous and synchronous contexts:

  • For tokio users, it uses tokio::time::sleep.
  • For async-std users, it uses async_std::task::sleep.
  • For synchronous contexts, it uses std::thread::sleep.

§Features

  • with-tokio: Uses tokio::time::sleep for async retries.
  • with-async-std: Uses async_std::task::sleep for async retries.
  • sync: Uses std::thread::sleep for sync retries.

§Errors

If all retry attempts fail, the last error is returned.