From ab1edfe39a387b679ce413643ea8c6e02f5c8d79 Mon Sep 17 00:00:00 2001 From: Wilfred Hughes Date: Wed, 30 Jun 2021 23:14:19 -0700 Subject: [PATCH] Terminate when the outer loop sees an end node --- src/ucs.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/ucs.rs b/src/ucs.rs index 48d9b04d2..902dc90bc 100644 --- a/src/ucs.rs +++ b/src/ucs.rs @@ -118,9 +118,14 @@ fn find_route<'a>(start: GraphNode<'a>) -> Vec> { let mut predecessors: HashMap = HashMap::new(); let end; - 'outer: loop { + loop { match heap.pop() { Some(ogn) => { + if ogn.gn.is_end() { + end = ogn.gn; + break; + } + let egn = EqualityGraphNode { gn: ogn.gn }; if visited.contains(&egn) { continue; @@ -129,12 +134,6 @@ fn find_route<'a>(start: GraphNode<'a>) -> Vec> { let gn = egn.gn; for new_gn in next_graph_nodes(&gn) { predecessors.insert(EqualityGraphNode { gn: new_gn.clone() }, gn.clone()); - - if new_gn.is_end() { - end = new_gn; - break 'outer; - } - heap.push(OrderedGraphNode { gn: new_gn }); }