РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1232 of 1245 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить