1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#[macro_export] macro_rules! retry_await { ($retries:expr, $future:expr) => {{ let mut retries = $retries; loop { match $future.await { Ok(result) => break Ok(result), Err(e) => { if retries == 0 { break Err(e); } retries -= 1; } } } }}; }