(&mut self)
| 107 | /// Advance past one char, return it. Returns None if at end. |
| 108 | #[inline(always)] |
| 109 | fn next_char(&mut self) -> Option<char> { |
| 110 | if self.pos >= self.bytes.len() { |
| 111 | return None; |
| 112 | } |
| 113 | let b = unsafe { *self.bytes.get_unchecked(self.pos) }; |
| 114 | if b < 128 { |
| 115 | self.pos += 1; |
| 116 | Some(b as char) |
| 117 | } else { |
| 118 | let remaining = unsafe { std::str::from_utf8_unchecked(&self.bytes[self.pos..]) }; |
| 119 | let c = remaining.chars().next()?; |
| 120 | self.pos += c.len_utf8(); |
| 121 | Some(c) |
| 122 | } |
| 123 | } |
| 124 | |
| 125 | /// Check if at end (no more bytes) |
| 126 | #[inline(always)] |
no test coverage detected