use std::{fmt::Debug, time::Duration}; use tokio::time::sleep; pub async fn retry_with_interval( retries: usize, interval: Duration, f: impl Fn() -> Result, ) -> T { let mut err = String::new(); for i in 0..retries { eprintln!("retrier: {} attempt...", i + 1); let result = f(); match result { Ok(r) => return r, Err(e) => { err = format!("{e:?}"); sleep(interval).await; } } } panic!("{err}"); }