use std::ops::Deref; pub enum Either { Left(A), Right(B), } impl Deref for Either where A: Deref, B: Deref, { type Target = A::Target; fn deref(&self) -> &Self::Target { match self { Self::Left(a) => a, Self::Right(b) => b, } } }