Function size_of_val_raw

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

Returns the size of the pointed-to value in bytes.

This is usually the same as size_of::<T>(). However, when T has no statically-known size, e.g., a slice [[T]][slice] or a trait object, then size_of_val_raw can be used to get the dynamically-known size.

Safety

This function is safe to call if the pointer is safe to reborrow as &T (in which case you could also call size_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, size_of_val(&5i32));

let x: [u8; 13] = [0; 13];
let y: &[u8] = &x;
assert_eq!(13, unsafe { mem::size_of_val_raw(y) });