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}