use alloc::vec::Vec;
#[derive(Clone, Debug, Default)]
#[expect(
clippy::redundant_pub_crate,
reason = "shared with engine and builder modules"
)]
pub(crate) struct TraverseScratch {
marks: Vec<u32>,
queue: Vec<u32>,
}
impl TraverseScratch {
pub(crate) fn resize_for_nodes(&mut self, node_count: usize) {
self.marks.resize(node_count, 0);
self.queue.resize(node_count, 0);
}
pub(crate) fn reset_after_snapshot(&mut self, node_count: usize) {
self.marks.clear();
self.queue.clear();
self.resize_for_nodes(node_count);
}
pub(crate) fn bounded_slices(&mut self) -> (&mut [u32], &mut [u32]) {
(&mut self.marks, &mut self.queue)
}
}