traiter 4.0.0

Traits collection.
Documentation
use core::mem::size_of;

pub trait FloatInfo {
    const EXPONENT_BITS_COUNT: usize;
    const SIGN_BITS_COUNT: usize;
    const SIGNIFICAND_BITS_COUNT: usize;
    const TOTAL_BITS_COUNT: usize;
}

macro_rules! float_float_info_impl {
    ($($float:ty)*) => ($(
        impl FloatInfo for $float {
            const EXPONENT_BITS_COUNT: usize = Self::TOTAL_BITS_COUNT
                - Self::SIGNIFICAND_BITS_COUNT
                - Self::SIGN_BITS_COUNT;
            const SIGN_BITS_COUNT: usize = 1usize;
            const SIGNIFICAND_BITS_COUNT: usize =
                (Self::MANTISSA_DIGITS as usize) - Self::SIGN_BITS_COUNT;
            const TOTAL_BITS_COUNT: usize = size_of::<Self>() * 8usize;
        }
    )*)
}

float_float_info_impl!(f32 f64);