use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
pub enum RoundingMode {
Down,
Up,
TowardZero,
AwayFromZero,
#[default]
HalfEven,
HalfUp,
HalfDown,
}
impl RoundingMode {
pub(crate) fn to_rust_decimal(self) -> rust_decimal::RoundingStrategy {
match self {
Self::Down => rust_decimal::RoundingStrategy::ToNegativeInfinity,
Self::Up => rust_decimal::RoundingStrategy::ToPositiveInfinity,
Self::TowardZero => rust_decimal::RoundingStrategy::ToZero,
Self::AwayFromZero => rust_decimal::RoundingStrategy::AwayFromZero,
Self::HalfEven => rust_decimal::RoundingStrategy::MidpointNearestEven,
Self::HalfUp => rust_decimal::RoundingStrategy::MidpointAwayFromZero,
Self::HalfDown => rust_decimal::RoundingStrategy::MidpointTowardZero,
}
}
}