1use crate::CloneableCart;
8
9use core::ops::Deref;
10use stable_deref_trait::StableDeref;
11
12#[derive(#[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl<C0: ::core::clone::Clone, C1: ::core::clone::Clone> ::core::clone::Clone
for EitherCart<C0, C1> {
#[inline]
fn clone(&self) -> EitherCart<C0, C1> {
match self {
EitherCart::A(__self_0) =>
EitherCart::A(::core::clone::Clone::clone(__self_0)),
EitherCart::B(__self_0) =>
EitherCart::B(::core::clone::Clone::clone(__self_0)),
}
}
}Clone, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl<C0: ::core::cmp::PartialEq, C1: ::core::cmp::PartialEq>
::core::cmp::PartialEq for EitherCart<C0, C1> {
#[inline]
fn eq(&self, other: &EitherCart<C0, C1>) -> bool {
let __self_discr = ::core::intrinsics::discriminant_value(self);
let __arg1_discr = ::core::intrinsics::discriminant_value(other);
__self_discr == __arg1_discr &&
match (self, other) {
(EitherCart::A(__self_0), EitherCart::A(__arg1_0)) =>
__self_0 == __arg1_0,
(EitherCart::B(__self_0), EitherCart::B(__arg1_0)) =>
__self_0 == __arg1_0,
_ => unsafe { ::core::intrinsics::unreachable() }
}
}
}PartialEq, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl<C0: ::core::cmp::Eq, C1: ::core::cmp::Eq> ::core::cmp::Eq for
EitherCart<C0, C1> {
#[inline]
#[doc(hidden)]
#[coverage(off)]
fn assert_receiver_is_total_eq(&self) -> () {
let _: ::core::cmp::AssertParamIsEq<C0>;
let _: ::core::cmp::AssertParamIsEq<C1>;
}
}Eq, #[automatically_derived]
#[allow(clippy::exhaustive_enums)]
impl<C0: ::core::fmt::Debug, C1: ::core::fmt::Debug> ::core::fmt::Debug for
EitherCart<C0, C1> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
EitherCart::A(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "A",
&__self_0),
EitherCart::B(__self_0) =>
::core::fmt::Formatter::debug_tuple_field1_finish(f, "B",
&__self_0),
}
}
}Debug)]
49#[allow(clippy::exhaustive_enums)] pub enum EitherCart<C0, C1> {
51 A(C0),
52 B(C1),
53}
54
55impl<C0, C1, T> Deref for EitherCart<C0, C1>
56where
57 C0: Deref<Target = T>,
58 C1: Deref<Target = T>,
59 T: ?Sized,
60{
61 type Target = T;
62 fn deref(&self) -> &T {
63 use EitherCart::*;
64 match self {
65 A(a) => a.deref(),
66 B(b) => b.deref(),
67 }
68 }
69}
70
71unsafe impl<C0, C1, T> StableDeref for EitherCart<C0, C1>
73where
74 C0: StableDeref,
75 C1: StableDeref,
76 C0: Deref<Target = T>,
77 C1: Deref<Target = T>,
78 T: ?Sized,
79{
80}
81
82unsafe impl<C0, C1> CloneableCart for EitherCart<C0, C1>
84where
85 C0: CloneableCart,
86 C1: CloneableCart,
87{
88}