Trait possibly_uninit::slice::BorrowOutSlice [−][src]
A trait somewhat similar to core::borrow::BorrowMut, but very specific about
being a slice containing MaybeUninit<Item>
The main reason for it is to allow use of array-like types in these scenarios:
Wrapper<[Item]>
Wrapper<MaybeUninit<Item>>
Wrapper<ReferenceTypeMut<Item>>
Wrapper<ReferenceTypeMut<MaybeUninit<Item>>>
Required methods
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
Borrows the value as a mutable slice of MaybeUninit<Item>
Provided methods
fn zero_if_needed(&mut self) -> &mut [Item] where
Item: ZeroValid,
[src]
Item: ZeroValid,
Zeroes the buffer if it’s needed and returns it as initialized.
This can be used when interfacing with an old code which doesn’t
support MaybeUninit<Item>
. However, it may cause performance decrease,
especially in loops. If you hit such issue, you can supply &mut [Item]
instead of &mut [MaybeUninit<Item>]
, which doesn’t need to zero the
buffer anymore.
Note that while strictly safe, the returned slice may contain garbage! Reading from the returned slice is not UB but nearly certainly a logic bug.
fn init_with_copy_from_slice(&mut self, slice: &[Item]) -> &mut [Item] where
Item: Copy,
[src]
Item: Copy,
Initializes the slice by copying from another slice.
The returned slice will have the same length as self.borrow_uninit_slice()
Panics if the lengths differ.
fn init_with_copy_from_slice_min(&mut self, slice: &[Item]) -> &mut [Item] where
Item: Copy,
[src]
Item: Copy,
Initializes a subslice by copying from another slice.
This is similar to init_with_copy_from_slice
except that instead of
panicking, it copies minimum of the slice lengths.
unsafe fn assume_init_mut(&mut self) -> &mut [Item]
[src]
Treat the slice as initialized.
This method is unsafe
because calling it without all the slice
being initialized is undefined behavior.
Implementors
impl<'a, T> BorrowOutSlice<T> for OutSlice<T>
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<T>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 0]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 1]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 2]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 3]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 4]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 5]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 6]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 7]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 8]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 9]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 10]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 11]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 12]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 13]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 14]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 15]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 16]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 17]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 18]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 19]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 20]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 21]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 22]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 23]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 24]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 25]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 26]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 27]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 28]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 29]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 30]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 31]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>; 32]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [MaybeUninit<Item>]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 0]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 1]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 2]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 3]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 4]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 5]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 6]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 7]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 8]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 9]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 10]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 11]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 12]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 13]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 14]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 15]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 16]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 17]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 18]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 19]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 20]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 21]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 22]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 23]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 24]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 25]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 26]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 27]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 28]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 29]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 30]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 31]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item; 32]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<Item> BorrowOutSlice<Item> for [Item]
[src]
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item]
[src]
impl<T: ?Sized, Item> BorrowOutSlice<Item> for T where
T: SameDataDeref + Deref + DerefMut,
T::Target: BorrowOutSlice<Item>,
[src]
T: SameDataDeref + Deref + DerefMut,
T::Target: BorrowOutSlice<Item>,
fn borrow_out_slice(&mut self) -> &mut OutSlice<Item>
[src]
fn zero_if_needed(&mut self) -> &mut [Item] where
Item: ZeroValid,
[src]
Item: ZeroValid,