use std::ops::ControlFlow;
use std::time::Duration;
use sisyphus::{retry_sync, Constant, PolicyExt, RetryError, SystemClock};
fn main() {
let policy = Constant::new(Duration::from_millis(20))
.max_elapsed_time(SystemClock, Duration::from_millis(200));
let mut attempt = 0u32;
let result: Result<(), RetryError<u32>> = retry_sync(
policy,
|| {
attempt += 1;
ControlFlow::Continue(attempt) },
std::thread::sleep,
);
match result {
Ok(()) => unreachable!(),
Err(RetryError::Exhausted(last)) => {
println!("real-time budget exhausted after {last} attempts");
}
}
}