use super::{super::annotate::*, macros::*};
use {
depiction::*,
duplicate::*,
std::{fmt, io},
};
impl_normal! {
UnsignedInteger(u64)
}
impl_normal_basic!(UnsignedInteger);
impl<AnnotatedT> Depict for UnsignedInteger<AnnotatedT> {
fn depict<WriteT>(&self, writer: &mut WriteT, context: &DepictionContext) -> io::Result<()>
where
WriteT: io::Write,
{
context.separate(writer)?;
if context.get_format() == DepictionFormat::Compact {
context.theme.write_number(writer, self.inner)
} else {
write!(writer, "{} {}", context.theme.number(self.inner), context.theme.meta("u64"))
}
}
}
impl<AnnotatedT> fmt::Display for UnsignedInteger<AnnotatedT> {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(formatter, "{}u64", self.inner)
}
}
#[duplicate_item(
FromT;
[u32];
[u16];
[u8];
[usize];
)]
impl<AnnotatedT> From<FromT> for UnsignedInteger<AnnotatedT>
where
AnnotatedT: Default,
{
fn from(unsigned_integer: FromT) -> Self {
Self::from(unsigned_integer as u64)
}
}
impl<AnnotatedT> From<&UnsignedInteger<AnnotatedT>> for u64 {
fn from(unsigned_integer: &UnsignedInteger<AnnotatedT>) -> Self {
unsigned_integer.inner
}
}