summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 1de814c..6f16148 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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))
}
}