Expand description

rustc encodes a lot of hashes. If hashes are stored as u64 or u128, a derive(Encodable) will apply varint encoding to the hashes, which is less efficient than directly encoding the 8 or 16 bytes of the hash.

The types in this module represent 64-bit or 128-bit hashes produced by a StableHasher. Hash64 and Hash128 expose some utilty functions to encourage users to not extract the inner hash value as an integer type and accidentally apply varint encoding to it.

In contrast with Fingerprint, users of these types cannot and should not attempt to construct and decompose these types into constitutent pieces. The point of these types is only to connect the fact that they can only be produced by a StableHasher to their Encode/Decode impls.