29
29
graph_b : GeometryGraph < ' a , F > ,
30
30
nodes : NodeMap < F , RelateNodeFactory > ,
31
31
line_intersector : RobustLineIntersector ,
32
- isolated_edges : Vec < Arc < RefCell < Edge < F > > > > ,
32
+ isolated_edges : Vec < Edge < F > > ,
33
33
}
34
34
35
35
#[ derive( PartialEq ) ]
87
87
// compute intersections between edges of the two input geometries
88
88
let segment_intersector = self
89
89
. graph_a
90
- . compute_edge_intersections ( & self . graph_b , Box :: new ( self . line_intersector . clone ( ) ) ) ;
90
+ . compute_edge_intersections ( & mut self . graph_b , Box :: new ( self . line_intersector . clone ( ) ) ) ;
91
91
92
92
self . compute_intersection_nodes ( 0 ) ;
93
93
self . compute_intersection_nodes ( 1 ) ;
@@ -103,9 +103,9 @@ where
103
103
// (eg where one or other of the geometries has a vertex at the intersection point)
104
104
// We need to compute the edge graph at all nodes to determine the IM.
105
105
let edge_end_builder = EdgeEndBuilder :: new ( ) ;
106
- let edge_ends_a: Vec < _ > = edge_end_builder. compute_ends_for_edges ( self . graph_a . edges ( ) ) ;
106
+ let edge_ends_a: Vec < _ > = edge_end_builder. compute_ends_for_edges ( self . graph_a . edges_mut ( ) ) ;
107
107
self . insert_edge_ends ( edge_ends_a) ;
108
- let edge_ends_b: Vec < _ > = edge_end_builder. compute_ends_for_edges ( self . graph_b . edges ( ) ) ;
108
+ let edge_ends_b: Vec < _ > = edge_end_builder. compute_ends_for_edges ( self . graph_b . edges_mut ( ) ) ;
109
109
self . insert_edge_ends ( edge_ends_b) ;
110
110
111
111
let mut nodes = NodeMap :: new ( ) ;
@@ -268,8 +268,6 @@ where
268
268
} ;
269
269
270
270
for edge in graph. edges ( ) {
271
- let edge = edge. borrow ( ) ;
272
-
273
271
let edge_position = edge. label ( ) . on_position ( geom_index) ;
274
272
for edge_intersection in edge. edge_intersections ( ) {
275
273
let ( new_node, _edges) = self
@@ -294,8 +292,7 @@ where
294
292
"before updated_intersection_matrix(isolated_edges): {:?}" ,
295
293
intersection_matrix
296
294
) ;
297
- for isolated_edge in & self . isolated_edges {
298
- let edge = isolated_edge. borrow ( ) ;
295
+ for edge in & self . isolated_edges {
299
296
Edge :: < F > :: update_intersection_matrix ( edge. label ( ) , intersection_matrix) ;
300
297
debug ! (
301
298
"after isolated_edge update_intersection_matrix: {:?}, (isolated_edge: {:?}, label: {:?})" ,
@@ -324,10 +321,9 @@ where
324
321
( & self . graph_b , & self . graph_a )
325
322
} ;
326
323
327
- for edge in this_graph. edges ( ) {
328
- let mut mut_edge = edge. borrow_mut ( ) ;
329
- if mut_edge. is_isolated ( ) {
330
- Self :: label_isolated_edge ( & mut mut_edge, target_index, target_graph. geometry ( ) ) ;
324
+ for edge in this_graph. edges_mut ( ) {
325
+ if edge. is_isolated ( ) {
326
+ Self :: label_isolated_edge ( & mut edge, target_index, target_graph. geometry ( ) ) ;
331
327
self . isolated_edges . push ( edge. clone ( ) ) ;
332
328
}
333
329
}
0 commit comments