dyn_stack

Struct UnpodStack

source
pub struct UnpodStack<'a> { /* private fields */ }
Expand description

Owns an unsized array of data, allocated from some stack.

Methods from Deref<Target = DynStack>§

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 (possibly uninitialized) stack memory.

source

pub fn make_aligned_uninit<T>( &mut self, size: usize, align: usize, ) -> (DynArray<'_, MaybeUninit<T>>, &mut Self)

Returns a new aligned and uninitialized DynArray 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_aligned_with<T>( &mut self, size: usize, align: usize, f: impl FnMut(usize) -> T, ) -> (DynArray<'_, T>, &mut Self)

Returns a new aligned DynArray, 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_uninit<T>( &mut self, size: usize, ) -> (DynArray<'_, MaybeUninit<T>>, &mut Self)

Returns a new uninitialized DynArray 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>( &mut self, size: usize, f: impl FnMut(usize) -> T, ) -> (DynArray<'_, T>, &mut Self)

Returns a new DynArray, 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, ) -> (DynArray<'_, I::Item>, &mut Self)

Returns a new aligned DynArray, 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, ) -> (DynArray<'_, I::Item>, &mut Self)

Returns a new DynArray, 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.

Trait Implementations§

source§

impl<'a> Deref for UnpodStack<'a>

source§

type Target = DynStack

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<'a> DerefMut for UnpodStack<'a>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<'a> Drop for UnpodStack<'a>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'a> Send for UnpodStack<'a>

source§

impl<'a> Sync for UnpodStack<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for UnpodStack<'a>

§

impl<'a> RefUnwindSafe for UnpodStack<'a>

§

impl<'a> Unpin for UnpodStack<'a>

§

impl<'a> UnwindSafe for UnpodStack<'a>

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
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.