#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Either<L, R> {
Left(L),
Right(R),
}
impl<L, R> Either<L, R> {
pub fn left(self) -> Option<L> {
match self {
Self::Left(left) => Some(left),
Self::Right(_) => None,
}
}
pub fn right(self) -> Option<R> {
match self {
Self::Left(_) => None,
Self::Right(right) => Some(right),
}
}
pub fn is_left(&self) -> bool {
matches!(self, Self::Left(_))
}
pub fn is_right(&self) -> bool {
matches!(self, Self::Right(_))
}
}