Как инициализировать память
Шаги:
- Создать
MaybeUninit<T> - Записать в него значение
- Сообщить Rust, что память инициализирована
// Copyright 2026 Google LLC
// SPDX-License-Identifier: Apache-2.0
use std::mem::MaybeUninit;
fn main() {
// Шаг 1: создаём MaybeUninit
let mut uninit = MaybeUninit::uninit();
// Шаг 2: записываем корректное значение в память
uninit.write(1);
// Шаг 3: сообщаем системе типов, что область памяти корректна
let init = unsafe { uninit.assume_init() };
println!("{init}");
}
This slide should take about 8 minutes.
Чтобы работать с неинициализированной памятью, следуйте общему порядку: создать, записать, подтвердить.
-
Создайте
MaybeUninit<T>. Конструктор::uninit()— самый универсальный, но есть и другие, которые тоже выполняют запись. -
Запишите значение типа T. Обратите внимание, что это доступно из безопасного Rust. Оставаться в безопасном Rust полезно, потому что вы должны убедиться, что записываемое значение корректно.
-
Подтвердите системе типов, что память теперь инициализирована, с помощью метода
.assume_init().