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