json_walker/
readers.rs

1pub struct StringReader {
2    bytes: Vec<u8>,
3    pos: usize,
4    len: usize,
5}
6
7impl StringReader {
8    pub fn new(json_text: String) -> Box<Self> {
9        let bytes = json_text.into_bytes();
10        let len = bytes.len();
11        Box::new(StringReader { bytes, pos: 0, len })
12    }
13}
14
15impl Iterator for StringReader {
16    type Item = u8;
17
18    fn next(&mut self) -> Option<Self::Item> {
19        if self.pos == self.len {
20            None
21        } else {
22            let r = Some(self.bytes[self.pos]);
23            self.pos += 1;
24            r
25        }
26    }
27}