MaybeUninit::zeroed()
// Copyright 2026 Google LLC
// SPDX-License-Identifier: Apache-2.0
use std::mem::{MaybeUninit, transmute};
fn main() {
let mut x = [const { MaybeUninit::<u32>::zeroed() }; 10];
x[6].write(7);
// SAFETY: все значения `x` были записаны
let x: [u32; 10] = unsafe { transmute(x) };
println!("{x:?}")
}
«MaybeUninit
Вопрос: «Хотя память была записана, тип остаётся MaybeUninit<T>. Может ли кто-нибудь предположить почему?»
Ответ: значения некоторых типов не могут быть нулевыми (null). Классический случай — ссылки, но это относится и ко многим другим типам. Вспомните целочисленный тип NonZeroUsize и другие типы этого семейства.