Implement ControlFlow for Result<C, E> C: ControlFlow instead of just Result<(), E>.
diff --git a/src/visit/dfsvisit.rs b/src/visit/dfsvisit.rs
index cfb40c9..52a67eb 100644
--- a/src/visit/dfsvisit.rs
+++ b/src/visit/dfsvisit.rs
@@ -93,13 +93,13 @@
}
}
-impl<E> ControlFlow for Result<(), E> {
- fn continuing() -> Self { Ok(()) }
+impl<C: ControlFlow, E> ControlFlow for Result<C, E> {
+ fn continuing() -> Self { Ok(C::continuing()) }
fn should_break(&self) -> bool {
self.is_err()
}
fn should_prune(&self) -> bool {
- false
+ if let Ok(ref c) = *self { c.should_prune() } else { false }
}
}