From b77ce32ecc625d624dae6f4e62d16be4e8a91c74 Mon Sep 17 00:00:00 2001 From: overlookmotel <557937+overlookmotel@users.noreply.github.com> Date: Sat, 16 Nov 2024 05:36:36 +0000 Subject: [PATCH] feat(data_structures): add methods to `SparseStack` (#7305) Add methods to `SparseStack` to get the filled entries as a slice, and get their length. --- crates/oxc_data_structures/src/stack/sparse.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/crates/oxc_data_structures/src/stack/sparse.rs b/crates/oxc_data_structures/src/stack/sparse.rs index 847d05c62f3522..9880fb4f1ca1fd 100644 --- a/crates/oxc_data_structures/src/stack/sparse.rs +++ b/crates/oxc_data_structures/src/stack/sparse.rs @@ -192,6 +192,12 @@ impl SparseStack { self.has_values.len() } + /// Get number of filled entries on the stack. + #[inline] + pub fn filled_len(&self) -> usize { + self.values.len() + } + /// Get capacity of stack for any entries (either `Some` or `None`). /// /// Capacity is always at least 1. Stack is never empty. @@ -209,4 +215,16 @@ impl SparseStack { pub fn filled_capacity(&self) -> usize { self.values.capacity() } + + /// Get filled entries of stack as a slice `&[T]`. + #[inline] + pub fn as_slice(&self) -> &[T] { + self.values.as_slice() + } + + /// Get filled entries of stack as a mutable slice `&mut [T]`. + #[inline] + pub fn as_mut_slice(&mut self) -> &mut [T] { + self.values.as_mut_slice() + } }