1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
pub trait Cmp { fn minimum(&self, rhs: Self) -> Self; fn maximum(&self, rhs: Self) -> Self; } macro_rules! impl_cmp { ($($t:ty)*) => { $( impl Cmp for $t { fn minimum(&self, rhs: Self) -> Self { <$t>::min(*self, rhs) } fn maximum(&self, rhs: Self) -> Self { <$t>::max(*self, rhs) } } )* } } impl_cmp!(u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 u128 i128 usize isize);