Skip to main content

nanvm_lib/vm/bigint/
display.rs

1use super::radix::chunk;
2use crate::{
3    sign::Sign,
4    vm::{BigInt, IVm},
5};
6use core::fmt::{Display, Formatter, Result, Write};
7
8impl<A: IVm> Display for BigInt<A> {
9    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
10        if self.is_zero() {
11            return f.write_char('0');
12        }
13        if self.sign() == Sign::Negative {
14            f.write_char('-')?;
15        }
16
17        let (base, width) = chunk(10);
18        let mut chunks = self.chunks(base);
19        write!(f, "{}", chunks.pop().unwrap())?;
20        for c in chunks.iter().rev() {
21            write!(f, "{c:0width$}")?;
22        }
23        Ok(())
24    }
25}