1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use core::mem::MaybeUninit; /// A place containing a single value. pub trait SinglePlace<T> { /// # Safety /// `f` must initialize `T` correctly. unsafe fn emplace_with(f: impl FnOnce(&mut MaybeUninit<T>)) -> Self; /// # Safety /// `f` must initialize `T` correctly. unsafe fn emplace_zeroed_with(f: impl FnOnce(&mut MaybeUninit<T>)) -> Self; } /// A place containing multiple continuous values. pub trait SlicePlace<T> { /// # Safety /// `f` must initialize every `T` correctly. unsafe fn emplace_with(len: usize, f: impl FnOnce(&mut [MaybeUninit<T>])) -> Self; /// # Safety /// `f` must initialize every `T` correctly. unsafe fn emplace_zeroed_with(len: usize, f: impl FnOnce(&mut [MaybeUninit<T>])) -> Self; }