1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
use crate::Array; use core::{mem::MaybeUninit, ptr}; /// Creates an array `[T; N]` where each array element `T` is returned by the `cb` call. #[inline] pub fn create_array<A, F>(mut cb: F) -> A where A: Array, F: FnMut(usize) -> A::Item, { unsafe { let mut array: MaybeUninit<A> = MaybeUninit::uninit(); for (idx, value_ptr) in (&mut *array.as_mut_ptr()).slice_mut().iter_mut().enumerate() { ptr::write(value_ptr, cb(idx)); } array.assume_init() } }