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;