Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
1233 of 1246 menu
◀ ▶

Функция size_of_val

Функция size_of_val возвращает размер значения в байтах. В отличие от функции size_of, которая работает с типами, size_of_val принимает ссылку на конкретное значение и может вычислить его размер, даже если тип является динамически изменяемым (например, срез [T] или трейт-объект dyn Trait). Параметром функция принимает ссылку на значение, размер которого нужно узнать. Функция объявлена как unsafe, поскольку её корректная работа требует, чтобы переданная ссылка указывала на валидное значение.

Синтаксис

unsafe fn size_of_val<T: ?Sized>(val: &T) -> usize

Пример

Давайте узнаем размер целого числа i32 через ссылку на него:

fn main() { let val: i32 = 42; let size = unsafe { std::mem::size_of_val(&val) }; println!("{}", size); }

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

4

Пример

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

fn main() { let s: &str = "abcde"; let size = unsafe { std::mem::size_of_val(s) }; println!("{}", size); }

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

5

Пример

Давайте узнаем размер среза массива, содержащего пять элементов i32:

fn main() { let arr = [1, 2, 3, 4, 5]; let slice: &[i32] = &arr; let size = unsafe { std::mem::size_of_val(slice) }; println!("{}", size); }

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

20

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

  • функция size_of,
    которая возвращает размер типа в байтах
  • функция align_of,
    которая возвращает выравнивание типа в байтах
  • функция align_of_val,
    которая возвращает выравнивание значения в байтах
  • ключевое слово unsafe,
    которое позволяет выполнять небезопасные операции
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить