use core::fmt::{Debug, Display, Formatter};
use crate::utils::assert_eq_size;
include!(concat!(env!("OUT_DIR"), "/default_rounding_mode.rs"));
#[derive(Clone, Copy, Hash, PartialEq, Eq)]
#[repr(u8)]
pub enum RoundingMode {
No = 0,
Up = 1,
Down = 2,
Ceiling = 3,
Floor = 4,
HalfUp = 5,
HalfDown = 6,
HalfEven = 7,
}
impl Default for RoundingMode {
#[inline(always)]
fn default() -> Self {
Self::default()
}
}
impl RoundingMode {
#[inline(always)]
pub const fn default() -> Self {
DEFAULT_ROUNDING_MODE
}
#[inline(always)]
pub const fn is_default(&self) -> bool {
(*self as u8) == (Self::default() as u8)
}
}
impl Display for RoundingMode {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
let rm = match self {
RoundingMode::No => "No",
RoundingMode::Up => "Up",
RoundingMode::Down => "Down",
RoundingMode::Ceiling => "Ceiling",
RoundingMode::Floor => "Floor",
RoundingMode::HalfUp => "HalfUp",
RoundingMode::HalfDown => "HalfDown",
RoundingMode::HalfEven => "HalfEven",
};
f.write_str(rm)
}
}
impl Debug for RoundingMode {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
write!(f, "{self}")
}
}
assert_eq_size!(RoundingMode, u8);