Guest User

Untitled

a guest
Jun 18th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. fn sum_all_numbers(val: u64) -> u64 {
  2. let mut x = val;
  3. let mut sum = 0;
  4. while x / 10 > 0 {
  5. sum = sum + x % 10;
  6. x = x / 10;
  7. }
  8. sum + x
  9. }
  10.  
  11. struct DigitEnumerator(u64);
  12.  
  13. impl Iterator for DigitEnumerator {
  14. type Item = u64;
  15.  
  16. fn next(&mut self) -> Option<u64> {
  17. let result = self.0 % 10;
  18. if result == 0 {
  19. return None;
  20. }
  21. self.0 /= 10;
  22. Some(result)
  23. }
  24. }
  25.  
  26. fn func_sum_all_numbers(val: u64) -> u64 {
  27. return DigitEnumerator(val).into_iter().sum();
  28. }
  29.  
  30. fn main() {
  31. let value = 123456;
  32. let result_sum = sum_all_numbers(value);
  33. let result_func_sum = func_sum_all_numbers(value);
  34. println!("{}", result_sum);
  35. println!("{}", result_func_sum);
  36. assert!(result_sum == result_func_sum);
  37. }
Add Comment
Please, Sign In to add comment