Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Как инициализировать память

Шаги:

  1. Создать MaybeUninit<T>
  2. Записать в него значение
  3. Сообщить 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.

Чтобы работать с неинициализированной памятью, следуйте общему порядку: создать, записать, подтвердить.

  1. Создайте MaybeUninit<T>. Конструктор ::uninit() — самый универсальный, но есть и другие, которые тоже выполняют запись.

  2. Запишите значение типа T. Обратите внимание, что это доступно из безопасного Rust. Оставаться в безопасном Rust полезно, потому что вы должны убедиться, что записываемое значение корректно.

  3. Подтвердите системе типов, что память теперь инициализирована, с помощью метода .assume_init().