pub fn as_pin_ref(self: Pin<&Self>) -> Either<Pin<&A>, Pin<&B>> {
        // SAFETY: We can use `new_unchecked` because the `inner` parts are
        // guaranteed to be pinned, as they come from `self` which is pinned.
        unsafe {
            match self.get_ref() {
                Self::Left(inner) => Either::Left(Pin::new_unchecked(inner)),
                Self::Right(inner) => Either::Right(Pin::new_unchecked(inner)),
            }
        }
    }
Convert `Pin<&Either<A, B>>` to `Either<Pin<&A>, Pin<&B>>`,
pinned projections of the inner variants.
futures-util/src/future/either.rs