Skip to main content

TypeHash

Trait TypeHash 

Source
pub trait TypeHash {
    // Required method
    fn write_hash(hasher: &mut impl Hasher);

    // Provided method
    fn type_hash() -> u64 { ... }
}
Expand description

A hash of a type’s structure

Required Methods§

Source

fn write_hash(hasher: &mut impl Hasher)

Write the structure of the type to the hasher

Provided Methods§

Source

fn type_hash() -> u64

Generate a stable hash of the type structure.

This recursively hashes the names and types of each variant and field, and uses an unseeded hasher to ensure the hash is stable across compilations and executions. The hash should only change if a field/variant is renamed, added, or its type is changed.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl TypeHash for ()

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicBool

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicI8

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicI16

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicI32

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicI64

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicIsize

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicU8

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicU16

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicU32

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicU64

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for AtomicUsize

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for Bump

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for Duration

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for FpCategory

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for IpAddr

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for Ipv4Addr

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for Ipv6Addr

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroI8

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroI16

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroI32

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroI64

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroI128

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroIsize

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroU8

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroU16

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroU32

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroU64

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroU128

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for NonZeroUsize

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for Ordering

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for RangeFull

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for SocketAddr

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for SocketAddrV4

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for SocketAddrV6

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for TypeId

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for bool

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for char

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for f32

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for f64

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for i8

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for i16

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for i32

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for i64

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for i128

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for isize

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for str

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for u8

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for u16

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for u32

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for u64

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for u128

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for usize

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<'a, T: TypeHash + ?Sized> TypeHash for Ref<'a, T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<'a, T: TypeHash> TypeHash for RefMut<'a, T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<K: TypeHash, V: TypeHash> TypeHash for HashMap<K, V>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash, T2: TypeHash, T3: TypeHash, T4: TypeHash, T5: TypeHash, T6: TypeHash, T7: TypeHash, T8: TypeHash, T9: TypeHash, T10: TypeHash, T11: TypeHash, T12: TypeHash, T13: TypeHash, T14: TypeHash, T15: TypeHash> TypeHash for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash, T2: TypeHash, T3: TypeHash, T4: TypeHash, T5: TypeHash, T6: TypeHash, T7: TypeHash, T8: TypeHash, T9: TypeHash, T10: TypeHash, T11: TypeHash, T12: TypeHash, T13: TypeHash, T14: TypeHash> TypeHash for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash, T2: TypeHash, T3: TypeHash, T4: TypeHash, T5: TypeHash, T6: TypeHash, T7: TypeHash, T8: TypeHash, T9: TypeHash, T10: TypeHash, T11: TypeHash, T12: TypeHash, T13: TypeHash> TypeHash for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash, T2: TypeHash, T3: TypeHash, T4: TypeHash, T5: TypeHash, T6: TypeHash, T7: TypeHash> TypeHash for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash, T2: TypeHash, T3: TypeHash, T4: TypeHash, T5: TypeHash, T6: TypeHash> TypeHash for (T0, T1, T2, T3, T4, T5, T6)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash, T2: TypeHash, T3: TypeHash, T4: TypeHash, T5: TypeHash> TypeHash for (T0, T1, T2, T3, T4, T5)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash, T2: TypeHash, T3: TypeHash, T4: TypeHash> TypeHash for (T0, T1, T2, T3, T4)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash, T2: TypeHash, T3: TypeHash> TypeHash for (T0, T1, T2, T3)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash, T2: TypeHash> TypeHash for (T0, T1, T2)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash, T1: TypeHash> TypeHash for (T0, T1)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T0: TypeHash> TypeHash for (T0,)

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized, U: TypeHash + ?Sized> TypeHash for fn(T) -> U

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for &T

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for &mut T

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for *const T

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for *mut T

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for Cell<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for ManuallyDrop<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for NonNull<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for PhantomData<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for RefCell<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash, E: TypeHash> TypeHash for Result<T, E>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for AtomicPtr<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for Bound<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for BuildHasherDefault<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for HashSet<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for MaybeUninit<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for Option<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for Pin<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for Range<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for RangeFrom<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for RangeInclusive<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for RangeTo<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for RangeToInclusive<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for Reverse<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for UnsafeCell<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for Wrapping<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for [T]

Source§

fn write_hash(hasher: &mut impl Hasher)

Implementors§

Source§

impl TypeHash for APFloat

Source§

impl TypeHash for AddressSpace

Source§

impl TypeHash for AggregateKind

Source§

impl TypeHash for BarrierLevel

Source§

impl TypeHash for Builtin

Source§

impl TypeHash for ClampMode

Source§

impl TypeHash for ConstantValue

Source§

impl TypeHash for ContiguousElements

Source§

impl TypeHash for DeviceProperties

Source§

impl TypeHash for DropBump

Source§

impl TypeHash for ElemType

Source§

impl TypeHash for ExpandValue

Source§

impl TypeHash for FastMath

Source§

impl TypeHash for FloatKind

Source§

impl TypeHash for InstructionModes

Source§

impl TypeHash for IntKind

Source§

impl TypeHash for MatrixIdent

Source§

impl TypeHash for MatrixLayout

Source§

impl TypeHash for MatrixScope

Source§

impl TypeHash for MatrixShape

Source§

impl TypeHash for MetadataKind

Source§

impl TypeHash for MmaProperties

Source§

impl TypeHash for OpaqueType

Source§

impl TypeHash for SemanticType

Source§

impl TypeHash for String

Source§

impl TypeHash for TargetProperties

Source§

impl TypeHash for Type

Source§

impl TypeHash for UIntKind

Source§

impl TypeHash for Value

Source§

impl<'a, T: TypeHash + ?Sized + ToOwned> TypeHash for Cow<'a, T>

Source§

impl<K: TypeHash, V: TypeHash> TypeHash for BTreeMap<K, V>

Source§

impl<T: TypeHash + ?Sized> TypeHash for Box<T>

Source§

impl<T: TypeHash + ?Sized> TypeHash for Intern<T>

Source§

impl<T: TypeHash + ?Sized> TypeHash for Rc<T>

Source§

impl<T: TypeHash + ?Sized> TypeHash for Weak<T>

Source§

impl<T: TypeHash + EnumSetType> TypeHash for EnumSet<T>

Source§

impl<T: TypeHash> TypeHash for BTreeSet<T>

Source§

impl<T: TypeHash> TypeHash for BinaryHeap<T>

Source§

impl<T: TypeHash> TypeHash for LinkedList<T>

Source§

impl<T: TypeHash> TypeHash for Vec<T>

Source§

impl<T: TypeHash> TypeHash for VecDeque<T>