diff --git a/src/specctra/read.rs b/src/specctra/read.rs index d782af8..51e1288 100644 --- a/src/specctra/read.rs +++ b/src/specctra/read.rs @@ -198,16 +198,8 @@ impl ListTokenizer { } fn next_char(&mut self) -> Result { - let return_chr = if let Some(chr) = self.peeked_char { - self.peeked_char = None; - chr - } else { - self.reader - .chars() - .next() - .ok_or(self.add_context(ParseError::Eof))? - .map_err(|err| self.add_context(err.into()))? - }; + let return_chr = self.peek_char()?; + self.peeked_char = None; if return_chr == '\n' { self.line += 1; @@ -220,17 +212,17 @@ impl ListTokenizer { } fn peek_char(&mut self) -> Result { - if let Some(chr) = self.peeked_char { - Ok(chr) + Ok(if let Some(chr) = self.peeked_char { + chr } else { let chr = self.reader - .chars() - .next() + .read_char() + .transpose() .ok_or(self.add_context(ParseError::Eof))? .map_err(|err| self.add_context(err.into()))?; self.peeked_char = Some(chr); - Ok(chr) - } + chr + }) } fn skip_whitespace(&mut self) -> Result<(), ParseErrorContext> {