From f95f977f98a68549901822861f37d71bf2b1919f Mon Sep 17 00:00:00 2001 From: nicoo Date: Wed, 1 Jul 2020 15:43:02 +0200 Subject: [PATCH] factor::numeric: Generate implementations of Int with a macro --- src/uu/factor/src/numeric.rs | 70 ++++++++++++------------------------ 1 file changed, 23 insertions(+), 47 deletions(-) diff --git a/src/uu/factor/src/numeric.rs b/src/uu/factor/src/numeric.rs index 7cb03a9e5..d2fc7604b 100644 --- a/src/uu/factor/src/numeric.rs +++ b/src/uu/factor/src/numeric.rs @@ -232,55 +232,31 @@ pub(crate) trait DoubleInt: Int { fn from_double(n: Self::Double) -> Self; } -impl Int for u32 { - fn as_u64(&self) -> u64 { - *self as _ - } - fn from_u64(n: u64) -> Self { - n as _ - } - #[cfg(debug_assertions)] - fn as_u128(&self) -> u128 { - *self as _ - } - #[cfg(debug_assertions)] - fn from_u128(n: u64) -> Self { - n as _ - } -} -impl Int for u64 { - fn as_u64(&self) -> u64 { - *self as _ - } - fn from_u64(n: u64) -> Self { - n as _ - } - #[cfg(debug_assertions)] - fn as_u128(&self) -> u128 { - *self as _ - } - #[cfg(debug_assertions)] - fn from_u128(n: u64) -> Self { - n as _ - } -} -impl Int for u128 { - fn as_u64(&self) -> u64 { - *self as _ - } - fn from_u64(n: u64) -> Self { - n as _ - } - #[cfg(debug_assertions)] - fn as_u128(&self) -> u128 { - *self as _ - } - #[cfg(debug_assertions)] - fn from_u128(n: u64) -> Self { - n as _ - } +macro_rules! int { + ( $x:ty ) => { + impl Int for $x { + fn as_u64(&self) -> u64 { + *self as u64 + } + fn from_u64(n: u64) -> Self { + n as _ + } + #[cfg(debug_assertions)] + fn as_u128(&self) -> u128 { + *self as u128 + } + #[cfg(debug_assertions)] + fn from_u128(n: u64) -> Self { + n as _ + } + } + }; } +int!(u32); +int!(u64); +int!(u128); + impl DoubleInt for u64 { type Double = u128;