Trait possibly_uninit::BorrowOut[][src]

pub unsafe trait BorrowOut<Borrowed>: BorrowUninit<Borrowed> {
    fn borrow_out(&mut self) -> Out<'_, Borrowed>;

    unsafe fn assume_init_mut(&mut self) -> &mut Borrowed { ... }
fn init(&mut self, item: Borrowed) -> &mut Borrowed { ... }
fn default_if_needed(&mut self) -> &mut Borrowed
    where
        Borrowed: Default
, { ... }
fn zeroed_if_needed(&mut self) -> &mut Borrowed
    where
        Borrowed: ZeroValid
, { ... } }

Trait allowing mutably borrowing of MaybeUninit<T> values.

It’s analogous to core::borrow::Borrow, expect it works with MaybeUninit values.

Required methods

fn borrow_out(&mut self) -> Out<'_, Borrowed>[src]

Mutably borrows maybe uninitialized value.

This method must return Out instead of normal &mut T because of safety reasons described in the documentation of Out type.

Loading content...

Provided methods

unsafe fn assume_init_mut(&mut self) -> &mut Borrowed[src]

Converts the reference assuming it’s initialized.

Safety

Calling this method on uninitialized value is undefined behavior.

fn init(&mut self, item: Borrowed) -> &mut Borrowed[src]

Initializes the memory location with valid value.

fn default_if_needed(&mut self) -> &mut Borrowed where
    Borrowed: Default
[src]

Overwrites the memory with Default::default() if necessary.

This method is noop on &mut Borrowed types. It may be used when interfacing with legacy code which can’t work with MaybeUninit<Borrowed>.

fn zeroed_if_needed(&mut self) -> &mut Borrowed where
    Borrowed: ZeroValid
[src]

Overwrites the memory with Default::default() if necessary.

This method is noop on &mut Borrowed types. It may be used when interfacing with legacy code which can’t work with MaybeUninit<Borrowed>.

Loading content...

Implementations on Foreign Types

impl<T> BorrowOut<T> for MaybeUninit<T>[src]

impl<T> BorrowOut<T> for &mut MaybeUninit<T>[src]

impl<T> BorrowOut<T> for RefMut<'_, T>[src]

impl<T> BorrowOut<T> for RefMut<'_, MaybeUninit<T>>[src]

Loading content...

Implementors

impl<'a, T> BorrowOut<T> for Out<'a, T>[src]

impl<T> BorrowOut<T> for &mut T[src]

impl<T> BorrowOut<T> for T[src]

Loading content...