pub trait ReprHash {
    // Required method
    fn repr_hash(_hasher: &mut impl Hasher, _offset_of: &mut usize);

    // Provided method
    fn repr_hash_val(&self, hasher: &mut impl Hasher, offset_of: &mut usize) { ... }
}
Expand description

Recursively compute a representational hash for a type.

ReprHash::repr_hash is a recursive function that computes representation information about a zero-copy type. It is used to check that the the alignment and the representation data of the data being deserialized.

More precisely, at each call a zero-copy type look at offset_of, assuming that the type is stored at that offset in the structure, hashes in the padding necessary to make offset_of a multiple of core::mem::align_of the type, hashes in the type size, and finally increases offset_of by core::mem::size_of the type.

Required Methods§

source

fn repr_hash(_hasher: &mut impl Hasher, _offset_of: &mut usize)

Accumulate representional information in hasher assuming to be positioned at offset_of.

Provided Methods§

source

fn repr_hash_val(&self, hasher: &mut impl Hasher, offset_of: &mut usize)

Call ReprHash::repr_hash on a value.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl ReprHash for bool

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for char

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for f32

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for f64

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for i8

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for i16

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for i32

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for i64

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for i128

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for isize

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for str

source§

fn repr_hash(_hasher: &mut impl Hasher, _offset_of: &mut usize)

source§

impl ReprHash for u8

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for u16

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for u32

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for u64

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for u128

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for ()

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for usize

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for Box<str>

source§

fn repr_hash(_hasher: &mut impl Hasher, _offset_of: &mut usize)

source§

impl ReprHash for String

source§

fn repr_hash(_hasher: &mut impl Hasher, _offset_of: &mut usize)

source§

impl ReprHash for DefaultHasher

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroI8

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroI16

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroI32

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroI64

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroI128

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroIsize

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroU8

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroU16

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroU32

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroU64

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroU128

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl ReprHash for NonZeroUsize

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl<T> ReprHash for [T]

source§

fn repr_hash(_hasher: &mut impl Hasher, _offset_of: &mut usize)

source§

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

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl<T: ReprHash> ReprHash for Option<T>

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl<T: ReprHash> ReprHash for Box<[T]>

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl<T: ReprHash> ReprHash for Vec<T>

source§

fn repr_hash(hasher: &mut impl Hasher, offset_of: &mut usize)

source§

impl<T: ?Sized> ReprHash for PhantomData<T>

source§

fn repr_hash(_hasher: &mut impl Hasher, _offset_of: &mut usize)

Implementors§