FIX: Simplify code in EdgeFilteredNeighborsDirected

Remove equivalent branch, remove unused struct field.
diff --git a/src/visit/filter.rs b/src/visit/filter.rs
index 271369c..cb64c79 100644
--- a/src/visit/filter.rs
+++ b/src/visit/filter.rs
@@ -348,7 +348,6 @@
         EdgeFilteredNeighborsDirected {
             iter: self.0.edges_directed(n, dir),
             f: &self.1,
-            dir: dir,
             from: n,
         }
     }
@@ -433,7 +432,6 @@
 {
     iter: G::EdgesDirected,
     f: &'a F,
-    dir: Direction,
     from: G::NodeId,
 }
 
@@ -445,18 +443,14 @@
     type Item = G::NodeId;
     fn next(&mut self) -> Option<Self::Item> {
         let f = self.f;
-        let dir = self.dir;
         let from = self.from;
         (&mut self.iter)
             .filter_map(move |edge| {
                 if f.include_edge(edge) {
                     if edge.source() != from {
                         Some(edge.source())
-                    } else if edge.target() != from {
-                        Some(edge.target())
                     } else {
-                        // source == target 
-                        Some(from)
+                        Some(edge.target()) // includes case where from == source == target
                     }
                 } else {
                     None