pub struct FrameArena {
pub total_allocated: usize,
pub reset_count: usize,
/* private fields */
}Expand description
A bump-arena that allocates sequentially within fixed-size pages.
Bulk-freed via reset() at function return. Pages are never returned
to the OS during execution — they are retained for reuse.
Fields§
§total_allocated: usizeTotal bytes allocated across all arena lifetimes (monotonic counter).
reset_count: usizeNumber of reset() calls.
Implementations§
Source§impl FrameArena
impl FrameArena
Sourcepub fn with_page_size(page_size: usize) -> Self
pub fn with_page_size(page_size: usize) -> Self
Create an arena with a custom page size (for testing).
Sourcepub fn alloc_bytes(&mut self, size: usize) -> (usize, usize)
pub fn alloc_bytes(&mut self, size: usize) -> (usize, usize)
Allocate size bytes from the arena. Returns the (page_index, offset)
pair that identifies the allocation.
If the current page doesn’t have enough room, advances to the next page (allocating a new one if needed).
Sourcepub fn get_bytes(&self, page: usize, offset: usize, len: usize) -> Option<&[u8]>
pub fn get_bytes(&self, page: usize, offset: usize, len: usize) -> Option<&[u8]>
Get a reference to the bytes at the given (page, offset) location.
Sourcepub fn get_bytes_mut(
&mut self,
page: usize,
offset: usize,
len: usize,
) -> Option<&mut [u8]>
pub fn get_bytes_mut( &mut self, page: usize, offset: usize, len: usize, ) -> Option<&mut [u8]>
Get a mutable reference to the bytes at the given (page, offset) location.
Sourcepub fn reset(&mut self)
pub fn reset(&mut self)
Reset the arena for reuse. All previous allocations are invalidated. Pages are NOT freed — they are retained for the next frame.
Sourcepub fn page_count(&self) -> usize
pub fn page_count(&self) -> usize
Number of pages currently allocated (including unused retained pages).
Sourcepub fn used_bytes(&self) -> usize
pub fn used_bytes(&self) -> usize
Bytes currently in use (from start of page 0 to current cursor).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for FrameArena
impl RefUnwindSafe for FrameArena
impl Send for FrameArena
impl Sync for FrameArena
impl Unpin for FrameArena
impl UnsafeUnpin for FrameArena
impl UnwindSafe for FrameArena
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more