diff options
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -296,14 +296,15 @@ where ) -> ParserResult<I, Self::Output, OM, EM> { Tracer::trace("or", it.clone()); - match ( - self.left.run::<OM, EM, Tracer>(it.clone()), - self.right.run::<OM, EM, Tracer>(it.clone()), - ) { - (Ok((rest, output)), _) => Ok((rest, output)), - (_, Ok((rest, output))) => Ok((rest, output)), - (_, Err(rest)) => Err(rest), - } + if let Ok((rest, output)) = self.left.run::<OM, EM, Tracer>(it.clone()) { + return Ok((rest, output)); + }; + + if let Ok((rest, output)) = self.right.run::<OM, EM, Tracer>(it.clone()) { + return Ok((rest, output)); + }; + + Err(EM::bind(|| it)) } } |
