[−][src]Function inplace_it::inplace
pub unsafe fn inplace<T, R, Consumer: FnOnce(&mut T) -> R>(
consumer: Consumer
) -> R
Places uninitialized memory for the T
type on the stack
and passes the reference to it into the consumer
closure.
This function is being used for placing fixed-size arrays
on the stack in cases when the type
of array ([T; $size]
generically)
is selects in runtime.
R
type is used to pass the result of the consumer
back when it return
control back.
consumer
's result will be returned.
Example
use inplace_it::inplace; unsafe { inplace(|memory: &mut [u8; 12]| { for i in 0u8..12 { memory[i as usize] = i; } let mut sum = 0; for i in 0..12 { sum += memory[i]; } assert_eq!(sum, 66); }); }
Safety
Because of some purposes we don't want to initialize the memory allocated
on the stack so we use core::mem::uninitialized
which is unsafe
so inplace
is unsafe too.
Also inplace
DO NOT drop
inplaced memory.