chj_rustbin/text/startswith.rs
1//! Implement `starts_with` for iterators.
2
3pub trait StartsWith<I> {
4 fn starts_with(&mut self, start: &mut I) -> Option<usize>;
5}
6
7impl<T: Eq, I: Iterator<Item = T>> StartsWith<I> for I {
8 fn starts_with(&mut self, start: &mut I) -> Option<usize> {
9 let mut len: usize = 0;
10 loop {
11 if let Some(b) = start.next() {
12 if let Some(a) = self.next() {
13 if a != b {
14 return None;
15 } else {
16 len += 1;
17 }
18 } else {
19 return None;
20 }
21 } else {
22 return Some(len);
23 }
24 }
25 }
26}