Sum digits of an integer: Difference between revisions

m (→‎{{header|zkl}}: refactor)
(→‎{{header|Rust}}: Added Rust)
Line 2,319:
=> 29
</lang>
 
=={{header|Rust}}==
===Using and Iterator===
This solution creates an iterator which yields the digits of a given number using a given base and then utilizes the `sum` method which is implemented automatically on iterators.
<lang rust>struct DigitIter(usize, usize);
 
impl Iterator for DigitIter {
type Item = usize;
fn next(&mut self) -> Option<Self::Item> {
if self.0 == 0 {
None
} else {
let ret = self.0 % self.1;
self.0 /= self.1;
Some(ret)
}
}
}
 
fn main() {
println!("{}", DigitIter(1234,10).sum::<usize>());
}</lang>
 
=={{header|Scala}}==
<lang scala>def sumDigits(x:BigInt, base:Int=10):BigInt=sumDigits(x.toString(base), base)