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

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() });
}

Implementors