From 3cdd512e8bf6d04bbf10312afcbe5069607a8c5c Mon Sep 17 00:00:00 2001 From: Hexa Dust Date: Fri, 18 Jul 2025 21:19:30 +0100 Subject: [PATCH] impl uDisplay for Decimal --- src/calc.rs | 4 ++-- src/lib.rs | 27 ++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/calc.rs b/src/calc.rs index b80a724..78b41c5 100644 --- a/src/calc.rs +++ b/src/calc.rs @@ -32,8 +32,8 @@ pub struct StackCalc - ufmt::uDebug for StackCalc +impl ufmt::uDebug + for StackCalc { fn fmt(&self, f: &mut ufmt::Formatter<'_, W>) -> Result<(), W::Error> where diff --git a/src/lib.rs b/src/lib.rs index 9d263bd..b5acf1a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,6 +7,8 @@ use num_traits::float::FloatCore; use num_traits::{one, zero, PrimInt, Unsigned}; #[cfg(feature = "ufmt")] use ufmt::derive::uDebug; +#[cfg(feature = "ufmt")] +use ufmt::{uDebug, uDisplay, uwrite}; #[derive(Debug)] #[cfg_attr(feature = "ufmt", derive(uDebug))] @@ -33,7 +35,7 @@ pub struct Decimal { } #[cfg(feature = "ufmt")] -impl ufmt::uDebug for Decimal { +impl uDebug for Decimal { fn fmt(&self, f: &mut ufmt::Formatter<'_, W>) -> Result<(), W::Error> where W: ufmt::uWrite + ?Sized, @@ -172,6 +174,29 @@ impl Display for Decimal { } } +#[cfg(feature = "ufmt")] +impl uDisplay for Decimal { + fn fmt(&self, f: &mut ufmt::Formatter<'_, W>) -> Result<(), W::Error> + where + W: ufmt::uWrite + ?Sized, + { + if self.minus { + uwrite!(f, "-")?; + } + for i in 0..SIZE { + uwrite!(f, "{}", self.significant[i])?; + if i == 0 { + uwrite!(f, ".")?; + } + } + uwrite!(f, "e")?; + if self.minus_exponent { + uwrite!(f, "-")?; + } + uwrite!(f, "{}", self.exponent) + } +} + impl TryFrom for Decimal { type Error = DecimalError;