pub trait NumberDigits { fn get_digit(self, digit_index: u8) -> u8; } impl NumberDigits for u8 { fn get_digit(self, digit_index: u8) -> u8 { let mut number = self; for _ in 0..digit_index { number /= 10; } number % 10 } } impl NumberDigits for u16 { fn get_digit(self, digit_index: u8) -> u8 { let mut number = self; for _ in 0..digit_index { number /= 10; } (number % 10) as u8 } } impl NumberDigits for u32 { fn get_digit(self, digit_index: u8) -> u8 { let mut number = self; for _ in 0..digit_index { number /= 10; } (number % 10) as u8 } }