/// Trait for converting a `Result` to another `Result` with different types.
///
/// `InputOk` and `InputErr` describe the incoming `Ok` and `Err` variants of the
/// original [`Result`]. Implementations produce values of type `OutputOk` and
/// `OutputErr` respectively when [`transform`] is invoked.