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

Функция uninit

Функция uninit класса MaybeUninit создаёт значение типа MaybeUninit<T>, которое не содержит инициализированных данных. Она не принимает параметров и возвращает объект, память которого не заполнена никаким конкретным значением. Данная функция является ассоциированной функцией и вызывается как MaybeUninit::uninit. Использование этой функции позволяет отложить инициализацию значения до более подходящего момента, что полезно при работе с низкоуровневой памятью.

Синтаксис

MaybeUninit::<T>::uninit()

Пример

Давайте создадим неинициализированное значение типа i32 и запишем в него число 123, а затем безопасно извлечём его с помощью метода assume_init:

use std::mem::MaybeUninit; fn main() { let mut value: MaybeUninit<i32> = MaybeUninit::uninit(); value.write(123); let res = unsafe { value.assume_init() }; println!("{}", res); }

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

123

Пример

Давайте создадим неинициализированный массив из пяти элементов типа i32, заполним его значениями и выведем на экран:

use std::mem::MaybeUninit; fn main() { let mut arr: [MaybeUninit<i32>; 5] = unsafe { MaybeUninit::uninit().assume_init() }; for (i, elem) in arr.iter_mut().enumerate() { elem.write(i as i32 * 10); } let res: [i32; 5] = unsafe { std::mem::transmute(arr) }; println!("{:?}", res); }

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

[0, 10, 20, 30, 40]

Пример

Давайте создадим неинициализированную переменную типа f64, запишем в неё число 3.14 и выведем результат:

use std::mem::MaybeUninit; fn main() { let mut value: MaybeUninit<f64> = MaybeUninit::uninit(); value.write(3.14); let res = unsafe { value.assume_init() }; println!("{}", res); }

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

3.14

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

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