From 781d2f17e56a445f02d6e96d0dc692dc91534173 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 8 Jan 2025 13:04:34 -0600 Subject: [PATCH 1/2] refactor(ascii): Rely on backtracking, rather than a cut mode --- src/ascii/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ascii/mod.rs b/src/ascii/mod.rs index d3e85902..c2b29ba2 100644 --- a/src/ascii/mod.rs +++ b/src/ascii/mod.rs @@ -178,12 +178,12 @@ where I: FindSlice<(char, char)>, ::Token: AsChar + Clone, { - let res = match take_until::<_, _, ()>(0.., ('\r', '\n')).parse_next(input) { + let res = match take_until(0.., ('\r', '\n')).parse_next(input) { Ok(slice) => slice, - Err(ErrMode::Incomplete(err)) => { - return Err(ErrMode::Incomplete(err)); + Err(ErrMode::Backtrack(_)) => input.finish(), + Err(err) => { + return Err(err); } - Err(_) => input.finish(), }; if matches!(input.compare("\r"), CompareResult::Ok(_)) { let comp = input.compare("\r\n"); From df54e83393904de144b0998ed6a5d638805dd465 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 8 Jan 2025 13:42:10 -0600 Subject: [PATCH 2/2] refactor(parser): Decouple error_into from ErrMode --- src/combinator/impls.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/combinator/impls.rs b/src/combinator/impls.rs index c7864594..738ab5a7 100644 --- a/src/combinator/impls.rs +++ b/src/combinator/impls.rs @@ -542,12 +542,9 @@ where { #[inline] fn parse_next(&mut self, i: &mut I) -> PResult { - match self.parser.parse_next(i) { - Ok(ok) => Ok(ok), - Err(ErrMode::Backtrack(e)) => Err(ErrMode::Backtrack(e.into())), - Err(ErrMode::Cut(e)) => Err(ErrMode::Cut(e.into())), - Err(ErrMode::Incomplete(e)) => Err(ErrMode::Incomplete(e)), - } + self.parser + .parse_next(i) + .map_err(|err| err.map(|e| e.into())) } }