Function align_of_val_raw

#[must_use]
pub const unsafe fn align_of_val_raw<T: ?Sized>(val: *const T) -> usize

Returns the ABI-required minimum alignment of the type of the value that val points to, in bytes.

This function is identical to [align_of_val()], except that it can be used with raw pointers in situations where it would be unsound or undesirable to convert them to [& references][primitive@reference] and impose the aliasing rules that come with that.

Safety

This function is safe to call if the pointer is safe to reborrow as &T (in which case you could also call align_of_val). Otherwise, the following conditions must hold:

Here, unsized tail refers to the type obtained by recursively descending through the last field of a tuple or struct until we arrived at a built-in unsized type.

As a consequence of these rules, it is the case that whenever it is allowed to convert val into a shared reference, then it is also allowed to invoke this function.

Examples

use std::mem;

assert_eq!(4, unsafe { mem::align_of_val_raw(&5i32) });

(Caution: it is not guaranteed that the alignment of i32 is 4; that is, the above assertion does not pass on all platforms.)