type IResult<I, O> = IResult<I, O, Error<I>>;
enum IResult<I, O> { Ok((I, O)), Err(Err<Error<I>>), }
Contains the success value
Contains the error value