1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-08-04 23:17:46 +00:00

factor::numeric: Generate implementations of Int with a macro

This commit is contained in:
nicoo 2020-07-01 15:43:02 +02:00
parent 53954badd7
commit f95f977f98

View file

@ -232,55 +232,31 @@ pub(crate) trait DoubleInt: Int {
fn from_double(n: Self::Double) -> Self; fn from_double(n: Self::Double) -> Self;
} }
impl Int for u32 { macro_rules! int {
fn as_u64(&self) -> u64 { ( $x:ty ) => {
*self as _ impl Int for $x {
} fn as_u64(&self) -> u64 {
fn from_u64(n: u64) -> Self { *self as u64
n as _ }
} fn from_u64(n: u64) -> Self {
#[cfg(debug_assertions)] n as _
fn as_u128(&self) -> u128 { }
*self as _ #[cfg(debug_assertions)]
} fn as_u128(&self) -> u128 {
#[cfg(debug_assertions)] *self as u128
fn from_u128(n: u64) -> Self { }
n 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 _
}
} }
int!(u32);
int!(u64);
int!(u128);
impl DoubleInt for u64 { impl DoubleInt for u64 {
type Double = u128; type Double = u128;