pub trait MaxSizeOf: Sized {
    // Required method
    fn max_size_of() -> usize;
}
Expand description

A trait providing the maximum size of a primitive field in a type maximized with core::mem::align_of.

We use the value returned by MaxSizeOf::max_size_of to generate padding before storing a zero-copy type. Note that this is different from the padding used to align the same type inside a struct, which is not under our control and is given by core::mem::align_of.

In this way we increase interoperability between architectures with different alignment requirements for the same types (e.g., 4 or 8 bytes for u64).

By maximizing with core::mem::align_of we ensure that we provide sufficient alignment in case the attribute repr(align(N)) was specified.

Required Methods§

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl MaxSizeOf for bool

source§

impl MaxSizeOf for char

source§

impl MaxSizeOf for f32

source§

impl MaxSizeOf for f64

source§

impl MaxSizeOf for i8

source§

impl MaxSizeOf for i16

source§

impl MaxSizeOf for i32

source§

impl MaxSizeOf for i64

source§

impl MaxSizeOf for i128

source§

impl MaxSizeOf for isize

source§

impl MaxSizeOf for u8

source§

impl MaxSizeOf for u16

source§

impl MaxSizeOf for u32

source§

impl MaxSizeOf for u64

source§

impl MaxSizeOf for u128

source§

impl MaxSizeOf for ()

source§

impl MaxSizeOf for usize

source§

impl MaxSizeOf for DefaultHasher

source§

impl MaxSizeOf for NonZeroI8

source§

impl MaxSizeOf for NonZeroI16

source§

impl MaxSizeOf for NonZeroI32

source§

impl MaxSizeOf for NonZeroI64

source§

impl MaxSizeOf for NonZeroI128

source§

impl MaxSizeOf for NonZeroIsize

source§

impl MaxSizeOf for NonZeroU8

source§

impl MaxSizeOf for NonZeroU16

source§

impl MaxSizeOf for NonZeroU32

source§

impl MaxSizeOf for NonZeroU64

source§

impl MaxSizeOf for NonZeroU128

source§

impl MaxSizeOf for NonZeroUsize

source§

impl<T0: MaxSizeOf, T1: MaxSizeOf, T2: MaxSizeOf, T3: MaxSizeOf, T4: MaxSizeOf, T5: MaxSizeOf, T6: MaxSizeOf, T7: MaxSizeOf, T8: MaxSizeOf, T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

source§

impl<T1: MaxSizeOf, T2: MaxSizeOf, T3: MaxSizeOf, T4: MaxSizeOf, T5: MaxSizeOf, T6: MaxSizeOf, T7: MaxSizeOf, T8: MaxSizeOf, T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

source§

impl<T2: MaxSizeOf, T3: MaxSizeOf, T4: MaxSizeOf, T5: MaxSizeOf, T6: MaxSizeOf, T7: MaxSizeOf, T8: MaxSizeOf, T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T2, T3, T4, T5, T6, T7, T8, T9, T10)

source§

impl<T3: MaxSizeOf, T4: MaxSizeOf, T5: MaxSizeOf, T6: MaxSizeOf, T7: MaxSizeOf, T8: MaxSizeOf, T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T3, T4, T5, T6, T7, T8, T9, T10)

source§

impl<T4: MaxSizeOf, T5: MaxSizeOf, T6: MaxSizeOf, T7: MaxSizeOf, T8: MaxSizeOf, T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T4, T5, T6, T7, T8, T9, T10)

source§

impl<T5: MaxSizeOf, T6: MaxSizeOf, T7: MaxSizeOf, T8: MaxSizeOf, T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T5, T6, T7, T8, T9, T10)

source§

impl<T6: MaxSizeOf, T7: MaxSizeOf, T8: MaxSizeOf, T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T6, T7, T8, T9, T10)

source§

impl<T7: MaxSizeOf, T8: MaxSizeOf, T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T7, T8, T9, T10)

source§

impl<T8: MaxSizeOf, T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T8, T9, T10)

source§

impl<T9: MaxSizeOf, T10: MaxSizeOf> MaxSizeOf for (T9, T10)

source§

impl<T10: MaxSizeOf> MaxSizeOf for (T10,)

source§

impl<T: MaxSizeOf, const N: usize> MaxSizeOf for [T; N]

Implementors§