@@ -782,12 +782,15 @@ impl PyDiGraph {
782782
783783 for edge in raw_edges {
784784 let succ = edge. target ( ) ;
785- if !used_indices. contains ( & succ) {
786- let edge_weight = edge. weight ( ) ;
787- if filter_edge ( edge_weight) ? {
788- used_indices. insert ( succ) ;
789- successors. push ( self . graph . node_weight ( succ) . unwrap ( ) ) ;
785+ match used_indices. entry ( succ) {
786+ Entry :: Vacant ( used_indices_entry) => {
787+ let edge_weight = edge. weight ( ) ;
788+ if filter_edge ( edge_weight) ? {
789+ used_indices_entry. insert ( ) ;
790+ successors. push ( self . graph . node_weight ( succ) . unwrap ( ) ) ;
791+ }
790792 }
793+ Entry :: Occupied ( _) => { }
791794 }
792795 }
793796 Ok ( successors)
@@ -841,12 +844,15 @@ impl PyDiGraph {
841844
842845 for edge in raw_edges {
843846 let pred = edge. source ( ) ;
844- if !used_indices. contains ( & pred) {
845- let edge_weight = edge. weight ( ) ;
846- if filter_edge ( edge_weight) ? {
847- used_indices. insert ( pred) ;
848- predec. push ( self . graph . node_weight ( pred) . unwrap ( ) ) ;
847+ match used_indices. entry ( pred) {
848+ Entry :: Vacant ( used_indices_entry) => {
849+ let edge_weight = edge. weight ( ) ;
850+ if filter_edge ( edge_weight) ? {
851+ used_indices_entry. insert ( ) ;
852+ predec. push ( self . graph . node_weight ( pred) . unwrap ( ) ) ;
853+ }
849854 }
855+ Entry :: Occupied ( _) => { }
850856 }
851857 }
852858 Ok ( predec)
0 commit comments