1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
pub struct SplitDigitIterator {
num: usize,
}
impl Iterator for SplitDigitIterator {
type Item = u8;
fn next(&mut self) -> Option<Self::Item> {
if self.num == 0 {
None
} else {
let digit = (self.num % 10) as u8;
self.num /= 10;
Some(digit)
}
}
}
#[cfg(test)]
mod tests {
use crate::SplitDigitIterator;
#[test]
fn test_split_digits() {
let digits: Vec<u8> = SplitDigitIterator { num: 568764567 }.collect();
assert_eq!(digits, vec![7, 6, 5, 4, 6, 7, 8, 6, 5]);
}
}