1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#![no_std] pub mod dec; pub trait Zero { const zero: Self; } pub trait One { const one : Self; } macro_rules! impl_zero_one { ($($t:ty),*) => {$( impl Zero for $t { const zero: Self = 0; } impl One for $t { const one : Self = 1; } )*} } impl_zero_one!(usize, u8, u16, u32, u64, isize, i8, i16, i32, i64); impl Zero for f32 { const zero: Self = 0.; } impl One for f32 { const one : Self = 1.; } impl Zero for f64 { const zero: Self = 0.; } impl One for f64 { const one : Self = 1.; } impl Zero for char { const zero: Self = '\0'; } impl<T> Zero for *const T { const zero: Self = 0 as Self; } impl<T> Zero for *mut T { const zero: Self = 0 as Self; }