1#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]
8pub enum Either<A, B> {
9 Left(A),
10 Right(B),
11}
12
13impl<A, B> Either<A, B> {
14 #[inline]
15 pub fn left(&self) -> Option<&A> {
16 match self {
17 Self::Left(ref v) => Some(v),
18 _ => None,
19 }
20 }
21
22 #[inline]
23 pub fn left_mut(&mut self) -> Option<&mut A> {
24 match self {
25 Self::Left(ref mut v) => Some(v),
26 _ => None,
27 }
28 }
29
30 #[inline]
31 pub fn into_left(self) -> Option<A> {
32 match self {
33 Self::Left(v) => Some(v),
34 _ => None,
35 }
36 }
37
38 #[inline]
39 pub fn right(&self) -> Option<&B> {
40 match self {
41 Self::Right(ref v) => Some(v),
42 _ => None,
43 }
44 }
45
46 #[inline]
47 pub fn right_mut(&mut self) -> Option<&mut B> {
48 match self {
49 Self::Right(ref mut v) => Some(v),
50 _ => None,
51 }
52 }
53
54 #[inline]
55 pub fn into_right(self) -> Option<B> {
56 match self {
57 Self::Right(v) => Some(v),
58 _ => None,
59 }
60 }
61}