Функция zeroed
Функция zeroed из модуля std::mem создает значение типа T,
все биты которого установлены в ноль. Функция является небезопасной,
так как не все типы допускают нулевое битовое представление.
Параметром функция не принимает ничего, а тип T указывается
явно или выводится из контекста.
Для типов, которые не могут быть корректно представлены всеми нулями
(например, &T, Box<T>, fn), вызов zeroed
приводит к неопределенному поведению. Использовать функцию следует только
для типов, у которых нулевое представление является допустимым,
например для целых чисел или массивов из них.
Синтаксис
unsafe { std::mem::zeroed::<T>() }
Пример
Давайте создадим значение типа i32, все биты которого равны нулю:
fn main()
{
let res: i32 = unsafe { std::mem::zeroed() };
println!("{}", res);
}
Результат выполнения кода:
0
Пример
Давайте создадим массив из пяти нулевых значений типа u8:
fn main()
{
let res: [u8; 5] = unsafe { std::mem::zeroed() };
println!("{:?}", res);
}
Результат выполнения кода:
[0, 0, 0, 0, 0]
Пример
Давайте создадим кортеж из трех нулевых значений разных целых типов:
fn main()
{
let res: (i32, u64, i8) = unsafe { std::mem::zeroed() };
println!("{:?}", res);
}
Результат выполнения кода:
(0, 0, 0)