Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn sum_all_numbers(val: u64) -> u64 {
- let mut x = val;
- let mut sum = 0;
- while x / 10 > 0 {
- sum = sum + x % 10;
- x = x / 10;
- }
- sum + x
- }
- struct DigitEnumerator(u64);
- impl Iterator for DigitEnumerator {
- type Item = u64;
- fn next(&mut self) -> Option<u64> {
- let result = self.0 % 10;
- if result == 0 {
- return None;
- }
- self.0 /= 10;
- Some(result)
- }
- }
- fn func_sum_all_numbers(val: u64) -> u64 {
- return DigitEnumerator(val).into_iter().sum();
- }
- fn main() {
- let value = 123456;
- let result_sum = sum_all_numbers(value);
- let result_func_sum = func_sum_all_numbers(value);
- println!("{}", result_sum);
- println!("{}", result_func_sum);
- assert!(result_sum == result_func_sum);
- }
Add Comment
Please, Sign In to add comment