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