use crate::gaussian_integer::{
ComparableGaussianInteger, ComparableGaussianIntegerRef, GaussianInteger,
};
use core::fmt::{Debug, Display, Formatter, Result, Write};
impl Display for GaussianInteger {
fn fmt(&self, f: &mut Formatter) -> Result {
if self.imaginary == 0u32 {
return Display::fmt(&self.real, f);
}
if self.real != 0u32 {
Display::fmt(&self.real, f)?;
if self.imaginary > 0u32 {
f.write_char('+')?;
}
}
if self.imaginary == 1u32 {
f.write_char('i')
} else if self.imaginary == -1i32 {
f.write_str("-i")
} else {
Display::fmt(&self.imaginary, f)?;
f.write_char('i')
}
}
}
impl Debug for GaussianInteger {
#[inline]
fn fmt(&self, f: &mut Formatter) -> Result {
Display::fmt(self, f)
}
}
impl Display for ComparableGaussianInteger {
#[inline]
fn fmt(&self, f: &mut Formatter) -> Result {
Display::fmt(&self.0, f)
}
}
impl Display for ComparableGaussianIntegerRef<'_> {
#[inline]
fn fmt(&self, f: &mut Formatter) -> Result {
Display::fmt(self.0, f)
}
}