pub fn factor_first(self) -> (T, Either<A, B>) {
        match self {
            Self::Left((x, a)) => (x, Either::Left(a)),
            Self::Right((x, b)) => (x, Either::Right(b)),
        }
    }
Factor out a homogeneous type from an either of pairs.

Here, the homogeneous type is the first element of the pairs.
futures-util/src/future/either.rs