Trait varlen::array_init::ArrayInitializer
source · [−]pub unsafe trait ArrayInitializer<T> {
fn initialize(self, dst: &mut [MaybeUninit<T>]);
}
Expand description
An object that is able to initialize an array of T
values.
Examples
An initializer that fills an array from end to start:
use varlen::prelude::*;
use std::mem::MaybeUninit;
struct WriteBackwardsPowersOf3;
unsafe impl ArrayInitializer<u64> for WriteBackwardsPowersOf3 {
fn initialize(self, dst: &mut [MaybeUninit<u64>]) {
let mut v = 1;
for slot in dst.iter_mut().rev() {
slot.write(v);
v *= 3;
}
}
}
assert_eq!([81, 27, 9, 3, 1], varlen::array_init::new_array(WriteBackwardsPowersOf3));
Required methods
fn initialize(self, dst: &mut [MaybeUninit<T>])
fn initialize(self, dst: &mut [MaybeUninit<T>])
Fills the slice.
use std::mem::MaybeUninit;
use varlen::prelude::*;
const UNINIT_U16: MaybeUninit<u16> = MaybeUninit::uninit();
let mut arr = [UNINIT_U16; 4];
FillWithDefault.initialize(&mut arr[..]);
for slot in arr {
assert_eq!(0, unsafe { slot.assume_init() });
}