Function std::mem::align_of_val_raw
const: unstable · source · pub unsafe fn align_of_val_raw<T>(val: *const T) -> usizewhere
T: ?Sized,
🔬This is a nightly-only experimental API. (
layout_for_ptr
#69835)Expand description
返回 val
指向的值类型的 ABI 要求的最小对齐方式 (以字节为单位)。
T
类型的值的每个引用必须是该数字的倍数。
Safety
仅在满足以下条件时,此函数才可以安全调用:
- 如果
T
是Sized
,则调用该函数始终是安全的。 - 如果
T
的未定义大小的尾部为:-
slice,则切片尾部的长度必须是初始化的整数,并且 entire 值(动态尾部长度 + 静态大小的前缀) 的大小必须适合
isize
。 -
trait 对象,则指针的 vtable 部分必须指向通过取消大小调整强制获取的有效 vtable,并且 entire 值(动态尾部长度 + 静态大小的前缀) 的大小必须适合
isize
。 -
一个不稳定的 外部类型,则此函数始终可以安全调用,但可能会 panic 或以其他方式返回错误的值,因为外部类型的布局未知。 这与带有外部类型尾部的类型的引用上的
align_of_val
行为相同。 -
否则,保守地不允许调用此函数。
-
Examples
#![feature(layout_for_ptr)]
use std::mem;
assert_eq!(4, unsafe { mem::align_of_val_raw(&5i32) });
Run