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 }
     }
 }