@@ -182,15 +182,12 @@ impl Dijkstra {
182
182
self . resolve_edge ( edge, & mut path, is_upwards, edges) ;
183
183
184
184
let current_edge = edges[ edge] ;
185
- let next;
186
185
let prev;
187
186
188
187
if is_upwards {
189
- next = current_edge. source ;
190
- prev = self . dist_up [ next] ;
188
+ prev = self . dist_up [ current_edge. source ] ;
191
189
} else {
192
- next = current_edge. target ;
193
- prev = self . dist_down [ next] ;
190
+ prev = self . dist_down [ current_edge. target ] ;
194
191
}
195
192
if let Some ( child) = prev. 1 {
196
193
self . walk_down ( child, is_upwards, & mut path, edges) ;
@@ -205,26 +202,17 @@ impl Dijkstra {
205
202
is_upwards : bool ,
206
203
edges : & [ Way ] ,
207
204
) {
208
- let current_edge = edges[ edge] ;
209
-
210
- if is_upwards {
211
- if let Some ( next) = current_edge. contrated_next {
212
- self . resolve_edge ( next, & mut path, is_upwards, & edges) ;
213
- }
214
- if let Some ( previous) = current_edge. contrated_previous {
215
- self . resolve_edge ( previous, & mut path, is_upwards, & edges) ;
216
- } else {
217
- path. push ( current_edge. source ) ;
218
- }
219
- } else {
220
- if let Some ( previous) = current_edge. contrated_previous {
221
- self . resolve_edge ( previous, & mut path, is_upwards, & edges) ;
222
- }
223
- if let Some ( next) = current_edge. contrated_next {
224
- self . resolve_edge ( next, & mut path, is_upwards, & edges) ;
225
- } else {
226
- path. push ( current_edge. target ) ;
205
+ match ( & edges[ edge] . contrated_previous , & edges[ edge] . contrated_next ) {
206
+ ( Some ( previous) , Some ( next) ) => {
207
+ if is_upwards {
208
+ self . resolve_edge ( * next, & mut path, is_upwards, edges) ;
209
+ self . resolve_edge ( * previous, & mut path, is_upwards, edges) ;
210
+ } else {
211
+ self . resolve_edge ( * previous, & mut path, is_upwards, edges) ;
212
+ self . resolve_edge ( * next, & mut path, is_upwards, edges) ;
213
+ }
227
214
}
215
+ _ => path. push ( edge) ,
228
216
}
229
217
}
230
218
0 commit comments