Skip to content

Commit

Permalink
feat(data_structures): add methods to SparseStack (#7305)
Browse files Browse the repository at this point in the history
Add methods to `SparseStack` to get the filled entries as a slice, and get their length.
  • Loading branch information
overlookmotel authored and Dunqing committed Nov 17, 2024
1 parent c7f53ec commit be6306a
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions crates/oxc_data_structures/src/stack/sparse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,12 @@ impl<T> SparseStack<T> {
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.
Expand All @@ -209,4 +215,16 @@ impl<T> SparseStack<T> {
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()
}
}

0 comments on commit be6306a

Please sign in to comment.