blob: f56408483ccca6b5a1e8ad5aa010eb2ebfd1158e (
plain)
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
29
30
31
|
#[derive(Clone, Debug)]
pub struct LinesWithTerminator<'a> {
data: &'a str,
}
impl<'a> LinesWithTerminator<'a> {
pub fn new(data: &'a str) -> LinesWithTerminator<'a> {
LinesWithTerminator { data }
}
}
impl<'a> Iterator for LinesWithTerminator<'a> {
type Item = &'a str;
#[inline]
fn next(&mut self) -> Option<&'a str> {
match self.data.find('\n') {
None if self.data.is_empty() => None,
None => {
let line = self.data;
self.data = "";
Some(line)
}
Some(end) => {
let line = &self.data[..end + 1];
self.data = &self.data[end + 1..];
Some(line)
}
}
}
}
|