From 8c9f695b39f7be060953927edb661cdd02f8906b Mon Sep 17 00:00:00 2001 From: magz <11150183+TheMagzuz@users.noreply.github.com> Date: Mon, 17 Nov 2025 14:50:28 +0100 Subject: [PATCH] make `Heap::as_slice` not panic on empty heap --- src/dary/heap.rs | 6 +++++- tests/priority_queue_tests/as_slice.rs | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dary/heap.rs b/src/dary/heap.rs index 5e5ee5d..ff44828 100644 --- a/src/dary/heap.rs +++ b/src/dary/heap.rs @@ -207,7 +207,11 @@ where /// assert!(slice.contains(&("z", 99))); /// ``` pub(crate) fn as_slice(&self) -> &[(N, K)] { - &self.tree[offset::()..] + if self.tree.is_empty() { + &self.tree + } else { + &self.tree[offset::()..] + } } } diff --git a/tests/priority_queue_tests/as_slice.rs b/tests/priority_queue_tests/as_slice.rs index ba9952c..644d898 100644 --- a/tests/priority_queue_tests/as_slice.rs +++ b/tests/priority_queue_tests/as_slice.rs @@ -20,6 +20,7 @@ pub fn test_as_slice(mut pq: DaryHeap) { pq.clear(); assert!(pq.is_empty()); let mut vec = vec![]; + assert!(pq.as_slice().is_empty()); let mut rng = rand::rng(); for node in 0..N {