#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum FinMoneyRoundingStrategy {
MidpointNearestEven,
MidpointAwayFromZero,
MidpointTowardZero,
ToZero,
AwayFromZero,
ToNegativeInfinity,
ToPositiveInfinity,
}
impl FinMoneyRoundingStrategy {
#[inline]
pub fn to_decimal_strategy(self) -> rust_decimal::RoundingStrategy {
match self {
FinMoneyRoundingStrategy::MidpointNearestEven => {
rust_decimal::RoundingStrategy::MidpointNearestEven
}
FinMoneyRoundingStrategy::MidpointAwayFromZero => {
rust_decimal::RoundingStrategy::MidpointAwayFromZero
}
FinMoneyRoundingStrategy::MidpointTowardZero => {
rust_decimal::RoundingStrategy::MidpointTowardZero
}
FinMoneyRoundingStrategy::ToZero => rust_decimal::RoundingStrategy::ToZero,
FinMoneyRoundingStrategy::AwayFromZero => rust_decimal::RoundingStrategy::AwayFromZero,
FinMoneyRoundingStrategy::ToNegativeInfinity => {
rust_decimal::RoundingStrategy::ToNegativeInfinity
}
FinMoneyRoundingStrategy::ToPositiveInfinity => {
rust_decimal::RoundingStrategy::ToPositiveInfinity
}
}
}
}
impl Default for FinMoneyRoundingStrategy {
fn default() -> Self {
FinMoneyRoundingStrategy::MidpointNearestEven
}
}