num_convert 0.7.2

Type converting library, conversions integers by overflow addition, supports generics types.
Documentation
use num_convert::FromAs;
use std::ops::Div;

trait IntegerLen {
    fn len(self) -> usize;
}

impl<T> IntegerLen for T
where
    T: Eq + Copy + Div<Output = T> + FromAs<u8>,
{
    fn len(mut self) -> usize {
        let mut count = 0;
        let ten = <T>::from_as(10_u8);
        let zero = <T>::from_as(0_u8);
        while self != zero {
            self = self / ten;
            count += 1;
        }
        if count == 0 {
            1
        } else {
            count
        }
    }
}

fn main() {
    let val = u128::MAX;
    println!("Max value of u128 => {} digits", val.len());
    assert_eq!(val.len(), val.to_string().len());

    let val = i128::MIN;
    assert_eq!(val.len(), val.to_string().trim_start_matches('-').len());
    println!("Min value of i128 => {} digits", val.len());
}