dyn_stack

Struct PodStack

source
pub struct PodStack { /* private fields */ }
Expand description

Stack wrapper around a buffer of bytes.

Implementations§

source§

impl PodStack

source

pub fn new(buffer: &mut [u8]) -> &mut Self

Returns a new PodStack from the provided memory buffer.

source

pub fn new_any<T: Pod>(buffer: &mut [T]) -> &mut Self

Returns a new DynStack from the provided memory buffer.

source

pub fn can_hold(&self, alloc_req: StackReq) -> bool

Returns true if the stack can hold an allocation with the given size and alignment requirements.

source

pub fn len_bytes(&self) -> usize

Returns the number of bytes that this stack can hold.

source

pub fn as_ptr(&self) -> *const u8

Returns a pointer to the stack memory.

source

pub fn make_aligned_raw<T: Pod>( &mut self, size: usize, align: usize, ) -> (&mut [T], &mut Self)

Returns a new aligned and uninitialized slice and a stack over the remainder of the buffer.

§Panics

Panics if the stack isn’t large enough to allocate the array.

source

pub unsafe fn make_aligned_unpod( &mut self, size: usize, align: usize, ) -> (UnpodStack<'_>, &mut Self)

Returns a new aligned and uninitialized slice and a stack over the remainder of the buffer.

§Panics

Panics if the stack isn’t large enough to allocate the array.

§Safety

The return value must be dropped if any uninitialized values are written to the bytes by the time the borrow ends.

source

pub fn make_aligned_with<T: Pod>( &mut self, size: usize, align: usize, f: impl FnMut(usize) -> T, ) -> (&mut [T], &mut Self)

Returns a new aligned slice, initialized with the provided function, and a stack over the remainder of the buffer.

§Panics

Panics if the stack isn’t large enough to allocate the array, or if the provided function panics.

source

pub fn make_raw<T: Pod>(&mut self, size: usize) -> (&mut [T], &mut Self)

Returns a new uninitialized slice and a stack over the remainder of the buffer.

§Panics

Panics if the stack isn’t large enough to allocate the array.

source

pub fn make_with<T: Pod>( &mut self, size: usize, f: impl FnMut(usize) -> T, ) -> (&mut [T], &mut Self)

Returns a new slice, initialized with the provided function, and a stack over the remainder of the buffer.

§Panics

Panics if the stack isn’t large enough to allocate the array, or if the provided function panics.

source

pub fn collect_aligned<I: IntoIterator>( &mut self, align: usize, iter: I, ) -> (&mut [I::Item], &mut Self)
where I::Item: Pod,

Returns a new aligned slice, initialized with the provided iterator, and a stack over the remainder of the buffer.
If there isn’t enough space for all the iterator items, then the returned array only contains the first elements that fit into the stack.

§Panics

Panics if the provided iterator panics.

source

pub fn collect<I: IntoIterator>( &mut self, iter: I, ) -> (&mut [I::Item], &mut Self)
where I::Item: Pod,

Returns a new slice, initialized with the provided iterator, and a stack over the remainder of the buffer.
If there isn’t enough space for all the iterator items, then the returned array only contains the first elements that fit into the stack.

§Panics

Panics if the provided iterator panics.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more