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}