[][src]Function retry_fn::retry_immediate

pub fn retry_immediate<F, T, E>(f: F) -> Result<T, RetryErr<E>> where
    F: FnMut(RetryOp) -> RetryResult<T, E>, 

retry with the 'immediate' strategy, i.e. no wait in between attempts

use retry_fn::{retry_immediate, RetryResult};
let mut count = 0;
let res = retry_immediate(|op| {
   if op.retries >= 3 {
       RetryResult::<&str, _>::Err(io::Error::new(
           io::ErrorKind::TimedOut,
           "timed out",
       ))
   } else {
       count += 1;
       RetryResult::Retry()
   }
});
assert_eq!(count, 3);
assert!(res.is_err());
Ok(())

Returns

If successful, return Ok, otherwise return Retry to try again or Err to exit with an error