Struct GuardBack
pub(in ::array) struct GuardBack<'a, T> { pub array_mut: &'a mut [MaybeUninit<T>], pub initialized: usize }
Panic guard for incremental initialization of arrays from the back.
Elements of the array are populated starting from the end towards the beginning.
Disarm the guard with mem::forget once the array has been fully initialized.
Safety
All write accesses to this structure are unsafe and must maintain a correct
count of initialized elements.
Fields
array_mut: &'a mut [MaybeUninit<T>]The array to be initialized (will be filled from the end).
initialized: usizeThe number of items that have been initialized so far.
Implementations
impl<T> GuardBack<'_, T>
unsafe fn push_unchecked(&mut self, item: T)Adds an item to the array and updates the initialized item counter.
Safety
No more than N elements must be initialized.
Trait Implementations
impl<T: Destruct> Drop for GuardBack<'_, T>
fn drop(&mut self)
Auto Trait Implementations
impl<'a, T> !UnwindSafe for GuardBack<'a, T>
impl<'a, T> Freeze for GuardBack<'a, T>
where
&'a mut [MaybeUninit<T>]: Freeze,
impl<'a, T> RefUnwindSafe for GuardBack<'a, T>
where
&'a mut [MaybeUninit<T>]: RefUnwindSafe,
impl<'a, T> Send for GuardBack<'a, T>
where
&'a mut [MaybeUninit<T>]: Send,
impl<'a, T> Sync for GuardBack<'a, T>
where
&'a mut [MaybeUninit<T>]: Sync,
impl<'a, T> Unpin for GuardBack<'a, T>
where
&'a mut [MaybeUninit<T>]: Unpin,
impl<'a, T> UnsafeUnpin for GuardBack<'a, T>
where
&'a mut [MaybeUninit<T>]: UnsafeUnpin,
Blanket Implementations
impl<T> Any for GuardBack<'a, T>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for GuardBack<'a, T>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for GuardBack<'a, T>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for GuardBack<'a, T>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> SizeHint for GuardBack<'a, T>
where
T: ?Sized,
fn lower_bound(&self) -> usizefn upper_bound(&self) -> Option<usize>
impl<T> SizedTypeProperties for GuardBack<'a, T>
impl<T, U> Into<U> for GuardBack<'a, T>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for GuardBack<'a, T>
where
U: Into<T>,
type Error = Infallible;fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for GuardBack<'a, T>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>