Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pub fn is_armstrong_number(num: u32) -> bool {
    if num < 10 {
        return true;
    }
    let num = u64::from(num);
    let digit_count = (num as f64).log10() as u32 + 1;
    let mut candidate = num;
    let mut total = 0;
    while candidate > 0 {
        total += (candidate % 10).pow(digit_count);
        candidate /= 10;
    }

    num == total
}