本文簡要介紹rust語言中 Function core::mem::align_of_val_raw
的用法。
用法
pub unsafe fn align_of_val_raw<T: ?Sized>(val: *const T) -> usize
返回val
指向的值的類型所需的ABI 最小對齊方式。
對T
類型值的每個引用都必須是該數字的倍數。
安全性
隻有在以下條件成立時,才能安全調用此函數:
- 如果
T
是Sized
,則此函數始終可以安全調用。 - 如果沒有大小的尾巴
T
是:- a 片,那麽切片尾部的長度必須是一個初始化的整數,並且切片尾部的大小全部值(動態尾部長度 + 靜態大小前綴)必須適合
isize
. - a 特質對象,那麽指針的 vtable 部分必須指向通過取消大小強製轉換獲得的有效 vtable,並且該 vtable 的大小全部值(動態尾部長度 + 靜態大小前綴)必須適合
isize
. - (不穩定)extern type ,則此函數始終可以安全調用,但可能會出現Panics或返回錯誤值,因為外部類型的布局未知。這與對具有 extern 類型尾部的類型的引用的
align_of_val
的行為相同。 - 否則,保守地不允許調用該函數。
- a 片,那麽切片尾部的長度必須是一個初始化的整數,並且切片尾部的大小全部值(動態尾部長度 + 靜態大小前綴)必須適合
例子
#![feature(layout_for_ptr)]
use std::mem;
assert_eq!(4, unsafe { mem::align_of_val_raw(&5i32) });
相關用法
- Rust align_of_val用法及代碼示例
- Rust align_of用法及代碼示例
- Rust alloc_zeroed用法及代碼示例
- Rust always_abort用法及代碼示例
- Rust alloc用法及代碼示例
- Rust assert_ne用法及代碼示例
- Rust array.map用法及代碼示例
- Rust assert_matches用法及代碼示例
- Rust addr_of_mut用法及代碼示例
- Rust array.split_array_ref用法及代碼示例
- Rust array用法及代碼示例
- Rust array.zip用法及代碼示例
- Rust assert_eq用法及代碼示例
- Rust array.split_array_mut用法及代碼示例
- Rust available_parallelism用法及代碼示例
- Rust addr_of用法及代碼示例
- Rust abort用法及代碼示例
- Rust array.each_mut用法及代碼示例
- Rust assert用法及代碼示例
- Rust array.each_ref用法及代碼示例
- Rust args用法及代碼示例
- Rust args_os用法及代碼示例
- Rust UdpSocket.set_multicast_loop_v6用法及代碼示例
- Rust i64.overflowing_add_unsigned用法及代碼示例
- Rust Box.downcast用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Function core::mem::align_of_val_raw。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。