numred/
lib.rs

1#[cfg(test)]
2mod tests {
3    #[test]
4    fn test_numred() {
5        let mut number: u64 = 12345678901299888;
6        let mut result = super::numred(&number);
7        assert_eq!(9, result);
8        number = 25;
9        result = super::numred(&number);
10        assert_eq!(7, result);
11    }
12}
13
14pub fn numred(number: &u64) -> u8 {
15    let v: Vec<u8> = number
16        .to_string()
17        .chars()
18        .map(|d| d.to_digit(10).unwrap() as u8)
19        .collect();
20    let mut result: u8 = 0;
21    for i in &v {
22        result = &result + i;
23        if result >= 10 {
24            let r = result as u64;
25            result = numred(&r);
26        }
27    }
28    result
29}