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", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl TypeHash for Ordering

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 SocketAddr

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 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 ()

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for usize

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl TypeHash for String

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 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 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 RangeFull

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 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 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<'a, T: TypeHash + ?Sized + ToOwned> TypeHash for Cow<'a, T>

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 BTreeMap<K, V>

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> TypeHash for (T0,)

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, T1: TypeHash, T2: TypeHash> TypeHash for (T0, T1, T2)

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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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<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 &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 Box<T>

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash + ?Sized> TypeHash for Weak<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 RefCell<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 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> TypeHash for Bound<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 [T]

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

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

Source§

fn write_hash(hasher: &mut impl Hasher)

Source§

impl<T: TypeHash> TypeHash for Vec<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 Reverse<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 Wrapping<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 Pin<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 AtomicPtr<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, 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)

Implementors§

Source§

impl TypeHash for Arithmetic

Source§

impl TypeHash for ArithmeticOpCode

Source§

impl TypeHash for AtomicOp

Source§

impl TypeHash for AtomicOpCode

Source§

impl TypeHash for BarrierLevel

Source§

impl TypeHash for BarrierOpCode

Source§

impl TypeHash for BarrierOps

Source§

impl TypeHash for Bitwise

Source§

impl TypeHash for BitwiseOpCode

Source§

impl TypeHash for Branch

Source§

impl TypeHash for BranchOpCode

Source§

impl TypeHash for Builtin

Source§

impl TypeHash for CmmaOpCode

Source§

impl TypeHash for Comparison

Source§

impl TypeHash for ComparisonOpCode

Source§

impl TypeHash for ConstantScalarValue

Source§

impl TypeHash for CoopMma

Source§

impl TypeHash for Elem

Source§

impl TypeHash for ExpandElement

Source§

impl TypeHash for FloatKind

Source§

impl TypeHash for IntKind

Source§

impl TypeHash for MatrixIdent

Source§

impl TypeHash for MatrixLayout

Source§

impl TypeHash for Metadata

Source§

impl TypeHash for MetadataOpCode

Source§

impl TypeHash for NonSemantic

Source§

impl TypeHash for NonSemanticOpCode

Source§

impl TypeHash for OpCode

Source§

impl TypeHash for Operation

Source§

impl TypeHash for Operator

Source§

impl TypeHash for OperatorOpCode

Source§

impl TypeHash for Plane

Source§

impl TypeHash for PlaneOpCode

Source§

impl TypeHash for ReadingStrategy

Source§

impl TypeHash for SyncOpCode

Source§

impl TypeHash for Synchronization

Source§

impl TypeHash for TmaOpCode

Source§

impl TypeHash for TmaOps

Source§

impl TypeHash for UIntKind

Source§

impl TypeHash for VariableKind

Source§

impl TypeHash for Allocator

Source§

impl TypeHash for BinaryOperator

Source§

impl TypeHash for ClampOperator

Source§

impl TypeHash for CompareAndSwapOperator

Source§

impl TypeHash for CopyMemoryBulkOperator

Source§

impl TypeHash for CopyMemoryOperator

Source§

impl TypeHash for CubeFnSource

Source§

impl TypeHash for DebugInfo

Source§

impl TypeHash for FmaOperator

Source§

impl TypeHash for If

Source§

impl TypeHash for IfElse

Source§

impl TypeHash for IndexAssignOperator

Source§

impl TypeHash for IndexOperator

Source§

impl TypeHash for Instruction

Source§

impl TypeHash for Item

Source§

impl TypeHash for LineInitOperator

Source§

impl TypeHash for Loop

Source§

impl TypeHash for Matrix

Source§

impl TypeHash for RangeLoop

Source§

impl TypeHash for ReadGlobalOperator

Source§

impl TypeHash for ReadGlobalWithLayoutOperator

Source§

impl TypeHash for ReinterpretSliceOperator

Source§

impl TypeHash for Scope

Source§

impl TypeHash for Select

Source§

impl TypeHash for SliceOperator

Source§

impl TypeHash for SourceLoc

Source§

impl TypeHash for Switch

Source§

impl TypeHash for UnaryOperator

Source§

impl TypeHash for Variable