macro_rules! decl_cross_width_eq_ord {
($Narrower:ident, $NarrowStorage:ty, $Wider:ident, $WideStorage:ty) => {
impl<const SCALE: u32> ::core::cmp::PartialEq<$Wider<SCALE>> for $Narrower<SCALE> {
#[inline]
fn eq(&self, other: &$Wider<SCALE>) -> bool {
let widened: $WideStorage =
<$NarrowStorage as $crate::WidthLE<$WideStorage>>::widen_into(self.0);
widened == other.0
}
}
impl<const SCALE: u32> ::core::cmp::PartialEq<$Narrower<SCALE>> for $Wider<SCALE> {
#[inline]
fn eq(&self, other: &$Narrower<SCALE>) -> bool {
let widened: $WideStorage =
<$NarrowStorage as $crate::WidthLE<$WideStorage>>::widen_into(other.0);
self.0 == widened
}
}
impl<const SCALE: u32> ::core::cmp::PartialOrd<$Wider<SCALE>> for $Narrower<SCALE> {
#[inline]
fn partial_cmp(&self, other: &$Wider<SCALE>) -> ::core::option::Option<::core::cmp::Ordering> {
let widened: $WideStorage =
<$NarrowStorage as $crate::WidthLE<$WideStorage>>::widen_into(self.0);
::core::cmp::PartialOrd::partial_cmp(&widened, &other.0)
}
}
impl<const SCALE: u32> ::core::cmp::PartialOrd<$Narrower<SCALE>> for $Wider<SCALE> {
#[inline]
fn partial_cmp(&self, other: &$Narrower<SCALE>) -> ::core::option::Option<::core::cmp::Ordering> {
let widened: $WideStorage =
<$NarrowStorage as $crate::WidthLE<$WideStorage>>::widen_into(other.0);
::core::cmp::PartialOrd::partial_cmp(&self.0, &widened)
}
}
};
}
pub(crate) use decl_cross_width_eq_ord;