use core::mem::MaybeUninit;
pub fn maybe_uninit_write_slice<'a, T>(this: &'a mut [MaybeUninit<T>], src: &[T]) -> &'a mut [T]
where
T: Copy,
{
let uninit_src: &[MaybeUninit<T>] = unsafe { core::mem::transmute(src) };
this.copy_from_slice(uninit_src);
unsafe { &mut *(this as *mut [MaybeUninit<T>] as *mut [T]) }
}