當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust size_of_val_raw用法及代碼示例


本文簡要介紹rust語言中 Function core::mem::size_of_val_raw 的用法。

用法

pub unsafe fn size_of_val_raw<T: ?Sized>(val: *const T) -> usize

返回指向值的大小(以字節為單位)。

這通常與size_of::<T>().然而,當T no statically-known 大小,例如,切片[T]或一個特質對象, 然後size_of_val_raw可用於獲取dynamically-known 大小。

安全性

隻有在以下條件成立時,才能安全調用此函數:

  • 如果 TSized ,則此函數始終可以安全調用。
  • 如果沒有大小的尾巴T是:
    • a ,那麽切片尾部的長度必須是一個初始化的整數,並且切片尾部的大小全部值(動態尾部長度 + 靜態大小前綴)必須適合isize.
    • a 特質對象,那麽指針的 vtable 部分必須指向通過取消大小強製轉換獲得的有效 vtable,並且該 vtable 的大小全部值(動態尾部長度 + 靜態大小前綴)必須適合isize.
    • (不穩定)extern type ,則此函數始終可以安全調用,但可能會出現Panics或返回錯誤值,因為外部類型的布局未知。這與對具有 extern 類型尾部的類型的引用的 size_of_val 的行為相同。
    • 否則,保守地不允許調用該函數。

例子

#![feature(layout_for_ptr)]
use std::mem;

assert_eq!(4, mem::size_of_val(&5i32));

let x: [u8; 13] = [0; 13];
let y: &[u8] = &x;
assert_eq!(13, unsafe { mem::size_of_val_raw(y) });

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Function core::mem::size_of_val_raw。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。