Hmm, doesn't transmute work on const generic arrays? Trying: ```rust #[cfg(loom)] let mut result_cells: [Cell; N] = { let cells: [MaybeUninit>; N] = [const { MaybeUninit::uninit() }; N]; for cell in cells.iter_mut() { cell.write(Cell::new(0)); } unsafe { core::mem::transmute(cells) } }; ``` and getting: ``` error[E0512]: cannot transmute between types of different sizes, or dependently-sized types --> src/mpmc.rs:172:26 | 172 | unsafe { core::mem::transmute(cells) } | ^^^^^^^^^^^^^^^^^^^^ | = note: source type: `[MaybeUninit>; N]` (this type does not have a fixed size) = note: target type: `[mpmc::Cell; N]` (this type does not have a fixed size) ```