РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1195 of 1245 menu

Функция zeroed класса MaybeUninit

Функция zeroed класса MaybeUninit создаёт значение типа MaybeUninit<T>, память которого заполнена нулевыми байтами. Это может быть полезно, когда нужно получить буфер, готовый к записи, или когда нулевое значение является корректным начальным состоянием для типа T. Функция не принимает параметров и возвращает MaybeUninit<T>. Обратите внимание, что полученное значение всё ещё считается неинициализированным с точки зрения типа, и для доступа к нему требуется unsafe.

Синтаксис

MaybeUninit::<T>::zeroed()

Пример

Давайте создадим значение типа MaybeUninit<i32> с помощью функции zeroed и проверим, что все байты равны нулю:

use std::mem::MaybeUninit; fn main() { let value: MaybeUninit<i32> = MaybeUninit::zeroed(); let bytes = unsafe { std::slice::from_raw_parts(value.as_ptr() as *const u8, 4) }; println!("{:?}", bytes); }

Результат выполнения кода:

[0, 0, 0, 0]

Пример

Давайте создадим значение типа MaybeUninit<[u8; 5]> и убедимся, что массив содержит только нули:

use std::mem::MaybeUninit; fn main() { let value: MaybeUninit<[u8; 5]> = MaybeUninit::zeroed(); let arr = unsafe { value.assume_init() }; println!("{:?}", arr); }

Результат выполнения кода:

[0, 0, 0, 0, 0]

Смотрите также

  • класс MaybeUninit,
    который представляет неинициализированное значение
  • функция uninit,
    которая создаёт полностью неинициализированное значение
  • функция new,
    которая создаёт инициализированное значение MaybeUninit
  • функция zeroed,
    которая создаёт значение с нулевыми байтами без обёртки MaybeUninit
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить