Функция align_of_val
Функция align_of_val возвращает выравнивание в байтах
для значения, на которое указывает переданная ссылка.
Параметром функция принимает ссылку на значение,
для которого нужно определить выравнивание.
Функция является безопасной и не требует блока unsafe.
Возвращаемое значение имеет тип usize.
В отличие от функции align_of, которая принимает тип
и возвращает выравнивание для этого типа, align_of_val
работает со значением и позволяет узнать выравнивание
для конкретного экземпляра, что полезно при работе
с динамическими типами и трейт-объектами.
Синтаксис
std::mem::align_of_val(val)
Пример
Давайте определим выравнивание для значения типа u32:
fn main()
{
let val: u32 = 42;
let res = std::mem::align_of_val(&val);
println!("{}", res);
}
Результат выполнения кода:
4
Пример
Давайте определим выравнивание для значения типа u8:
fn main()
{
let val: u8 = 7;
let res = std::mem::align_of_val(&val);
println!("{}", res);
}
Результат выполнения кода:
1
Пример
Давайте определим выравнивание для значения типа u64:
fn main()
{
let val: u64 = 100;
let res = std::mem::align_of_val(&val);
println!("{}", res);
}
Результат выполнения кода:
8
Пример
Давайте определим выравнивание для элемента среза:
fn main()
{
let arr = [1u16, 2, 3, 4, 5];
let res = std::mem::align_of_val(&arr[0]);
println!("{}", res);
}
Результат выполнения кода:
2
Смотрите также
-
функция
align_of,
которая возвращает выравнивание для указанного типа -
функция
size_of,
которая возвращает размер типа в байтах -
функция
size_of_val,
которая возвращает размер значения в байтах -
структура
Layout,
которая описывает расположение блока памяти