Struct static_alloc::leaked::Alloca [−][src]
Zero-sized marker struct that allows running one or several methods.
This ensures that allocation does not exceed certain limits that would likely blow the stack and run into Rust's canary, this aborting the process.
Implementations
impl<T> Alloca<T>[src]
pub fn new(len: usize) -> Option<Self>[src]
Try to create a representation, that allows functions with dynamically stack-allocated slices.
pub fn run<R>(&self, run: impl FnOnce(&mut [MaybeUninit<T>]) -> R) -> R[src]
Allocate a slice of elements.
Please note that instantiating this method relies on the optimizer, to an extent. In
particular we will create stack slots of differing sizes depending on the internal size.
This shouldn't have an effect other than moving the stack pointer for various amounts and
should never have more than one T in overhead. However, we can't enforce this. In theory
llvm might still reserve stack space for all variants including a probe and thus
prematurely assume we have hit the bottom of the available stack space. This is not very
likely to occur in practice.
Auto Trait Implementations
impl<T> Send for Alloca<T> where
T: Send, [src]
T: Send,
impl<T> Sync for Alloca<T> where
T: Sync, [src]
T: Sync,
impl<T> Unpin for Alloca<T> where
T: Unpin, [src]
T: Unpin,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,