pub const unsafe fn align_of_val_raw<T: ?Sized>(val: *const T) -> usizeExpand description
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 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:
- If
TisSized, this function is always safe to call. - If the unsized tail of
Tis:- a slice
[U],str, or a trait objectdyn Trait, then the size of the entire value (dynamic tail length + statically sized prefix) must fit inisize. For the special case where the dynamic tail length is 0, this function is safe to call. - No other kind of unsized tail currently exists that satisfies the trait bounds for this function. If more kinds of unsized tails get introduced in the future, the documentation of this function will have to be extended before it can be used for such types.
- a slice
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
(Caution: it is not guaranteed that the alignment of i32 is 4;
that is, the above assertion does not pass on all platforms.)