pub fn retry<I, O, F>(f: F, input: I) -> Result<O, Error<I>> where F: FnMut(I) -> Result<O, Error<I>>,