use std::{thread::sleep, time::Duration}; pub fn retry( function: impl Fn(usize) -> color_eyre::Result, sleep_in_s: u64, retries: usize, ) -> color_eyre::Result { let mut i = 0; loop { let res = function(i); if i == retries || res.is_ok() { return res; } else { sleep(Duration::from_secs(sleep_in_s)); } i += 1; } }