From b738a425e429938a9261b3cd0f7e276984c061a5 Mon Sep 17 00:00:00 2001 From: Alain Emilia Anna Zscheile Date: Mon, 30 Sep 2024 20:06:47 +0200 Subject: [PATCH] specctra/read: don't repeat character retrieval code --- src/specctra/read.rs | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) 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> {