1use digit::Digit;
2
3use std::slice;
4
5#[derive(Debug, Clone)]
9pub(crate) struct ContiguousDigitSeq<'a> {
10 digits: slice::Iter<'a, Digit>
11}
12
13impl<'a> From<&'a [Digit]> for ContiguousDigitSeq<'a> {
14 #[inline]
15 fn from(slice: &'a [Digit]) -> ContiguousDigitSeq<'a> {
16 ContiguousDigitSeq{digits: slice.iter()}
17 }
18}
19
20impl<'a> Iterator for ContiguousDigitSeq<'a> {
21 type Item = Digit;
22
23 #[inline]
24 fn next(&mut self) -> Option<Self::Item> {
25 self.digits.next().cloned()
26 }
27}
28
29#[derive(Debug)]
33pub(crate) struct ContiguousDigitSeqMut<'a> {
34 digits: slice::IterMut<'a, Digit>
35}
36
37impl<'a> From<&'a mut [Digit]> for ContiguousDigitSeqMut<'a> {
38 #[inline]
39 fn from(slice: &'a mut [Digit]) -> ContiguousDigitSeqMut<'a> {
40 ContiguousDigitSeqMut{digits: slice.iter_mut()}
41 }
42}
43
44impl<'a> Iterator for ContiguousDigitSeqMut<'a> {
45 type Item = &'a mut Digit;
46
47 #[inline]
48 fn next(&mut self) -> Option<Self::Item> {
49 self.digits.next()
50 }
51}