本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。