1use num_conv::prelude::*;
2
3pub(crate) trait DigitCount {
8 fn num_digits(self) -> u8;
10}
11
12macro_rules! impl_digit_count {
14 ($($t:ty),* $(,)?) => {
15 $(impl DigitCount for $t {
16 #[inline]
17 fn num_digits(self) -> u8 {
18 match self.checked_ilog10() {
19 Some(n) => n.truncate::<u8>() + 1,
20 None => 1,
21 }
22 }
23 })*
24 };
25}
26
27impl DigitCount for u8 {
#[inline]
fn num_digits(self) -> u8 {
match self.checked_ilog10() {
Some(n) => n.truncate::<u8>() + 1,
None => 1,
}
}
}
impl DigitCount for u16 {
#[inline]
fn num_digits(self) -> u8 {
match self.checked_ilog10() {
Some(n) => n.truncate::<u8>() + 1,
None => 1,
}
}
}
impl DigitCount for u32 {
#[inline]
fn num_digits(self) -> u8 {
match self.checked_ilog10() {
Some(n) => n.truncate::<u8>() + 1,
None => 1,
}
}
}impl_digit_count!(u8, u16, u32);