rutil 0.2.0

A library containing utilities for creating programs in rust.
Documentation
/// Size operations.
pub trait SizeOps {
    /// The size of this number type in bits.
    fn bits() -> u32;

    /// The smallest value that can be represented by this number type.
    fn min_value() -> Self;

    /// The largest value that can be represented by this number type.
    fn max_value() -> Self;
}

/// Implements [`SizeOps`] for integers.
macro_rules! impl_size_int {
    ($($t:ty),*) => {
        $(impl SizeOps for $t {
            #[inline] fn bits() -> u32 { Self::BITS }
            #[inline] fn min_value() -> Self { Self::MIN }
            #[inline] fn max_value() -> Self { Self::MAX }
        })*
    };
}

impl_size_int!(u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize);

/// Implements [`SizeOps`] for floats.
macro_rules! impl_size_float {
    ($($t:ty: $size:expr),*) => {
        $(impl SizeOps for $t {
            #[inline] fn bits() -> u32 { $size }
            #[inline] fn min_value() -> Self { Self::MIN }
            #[inline] fn max_value() -> Self { Self::MAX }
        })*
    };
}

impl_size_float!(f32: 32, f64: 64);