From ec43a57d0bf51030a4bed668b8cca9e5d288b244 Mon Sep 17 00:00:00 2001 From: mat Date: Mon, 5 Jan 2026 03:26:20 +0400 Subject: slightly abstract binaryheap in pathfinder --- azalea/benches/pathfinder.rs | 1 + azalea/src/pathfinder/astar.rs | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/azalea/benches/pathfinder.rs b/azalea/benches/pathfinder.rs index 5ad73d7d..9f8d2c34 100644 --- a/azalea/benches/pathfinder.rs +++ b/azalea/benches/pathfinder.rs @@ -148,6 +148,7 @@ fn run_pathfinder_benchmark( let astar::Path { movements, is_partial: partial, + .. } = a_star( RelBlockPos::get_origin(origin), |n| goal.heuristic(n.apply(origin)), diff --git a/azalea/src/pathfinder/astar.rs b/azalea/src/pathfinder/astar.rs index 7bd08111..d5dc86bd 100644 --- a/azalea/src/pathfinder/astar.rs +++ b/azalea/src/pathfinder/astar.rs @@ -52,7 +52,7 @@ where { let start_time = Instant::now(); - let mut open_set = BinaryHeap::::new(); + let mut open_set = PathfinderHeap::new(); open_set.push(WeightedNode { g_score: 0., f_score: 0., @@ -282,6 +282,23 @@ impl Clone for Movement { } } +#[derive(Default)] +struct PathfinderHeap { + binary_heap: BinaryHeap, +} +impl PathfinderHeap { + pub fn new() -> Self { + Self::default() + } + + pub fn push(&mut self, item: WeightedNode) { + self.binary_heap.push(item); + } + pub fn pop(&mut self) -> Option { + self.binary_heap.pop() + } +} + #[derive(PartialEq)] #[repr(C)] pub struct WeightedNode { -- cgit v1.2.3