Функция new класса MaybeUninit
Функция new класса MaybeUninit создаёт новый экземпляр
MaybeUninit, значение которого считается неинициализированным.
Параметром функция принимает значение, которым нужно заполнить память.
Функция является const, то есть может быть вызвана в константном контексте.
Возвращает новый экземпляр MaybeUninit<T>.
Класс MaybeUninit используется для работы с памятью, которая
ещё не была инициализирована. Это позволяет избежать немедленной
инициализации и даёт возможность записать значение позже.
Синтаксис
MaybeUninit::new(value)
Пример
Давайте создадим экземпляр MaybeUninit с числом 42
и извлечём значение с помощью assume_init:
use std::mem::MaybeUninit;
fn main()
{
let mut x = MaybeUninit::new(42);
let res = unsafe { x.assume_init() };
println!("{}", res);
}
Результат выполнения кода:
42
Пример
Давайте создадим экземпляр MaybeUninit со строкой "abcde"
и извлечём значение:
use std::mem::MaybeUninit;
fn main()
{
let mut x = MaybeUninit::new("abcde");
let res = unsafe { x.assume_init() };
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте создадим экземпляр MaybeUninit с вектором
vec![1, 2, 3, 4, 5] и извлечём значение:
use std::mem::MaybeUninit;
fn main()
{
let mut x = MaybeUninit::new(vec![1, 2, 3, 4, 5]);
let res = unsafe { x.assume_init() };
println!("{:?}", res);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Смотрите также
-
класс
MaybeUninit,
который представляет неинициализированную память -
метод
uninit,
который создаёт неинициализированный экземпляр -
метод
assume_init,
который извлекает значение из MaybeUninit -
метод
write,
который записывает значение в MaybeUninit