Trait std_prelude::Hash

1.0.0 · source ·
pub trait Hash {
    // Required method
    fn hash<H>(&self, state: &mut H)
       where H: Hasher;

    // Provided method
    fn hash_slice<H>(data: &[Self], state: &mut H)
       where H: Hasher,
             Self: Sized { ... }
}
Expand description

A hashable type.

Types implementing Hash are able to be hashed with an instance of Hasher.

Implementing Hash

You can derive Hash with #[derive(Hash)] if all fields implement Hash. The resulting hash will be the combination of the values from calling hash on each field.

#[derive(Hash)]
struct Rustacean {
    name: String,
    country: String,
}

If you need more control over how a value is hashed, you can of course implement the Hash trait yourself:

use std::hash::{Hash, Hasher};

struct Person {
    id: u32,
    name: String,
    phone: u64,
}

impl Hash for Person {
    fn hash<H: Hasher>(&self, state: &mut H) {
        self.id.hash(state);
        self.phone.hash(state);
    }
}

Hash and Eq

When implementing both Hash and Eq, it is important that the following property holds:

k1 == k2 -> hash(k1) == hash(k2)

In other words, if two keys are equal, their hashes must also be equal. HashMap and HashSet both rely on this behavior.

Thankfully, you won’t need to worry about upholding this property when deriving both Eq and Hash with #[derive(PartialEq, Eq, Hash)].

Prefix collisions

Implementations of hash should ensure that the data they pass to the Hasher are prefix-free. That is, unequal values should cause two different sequences of values to be written, and neither of the two sequences should be a prefix of the other.

For example, the standard implementation of Hash for &str passes an extra 0xFF byte to the Hasher so that the values ("ab", "c") and ("a", "bc") hash differently.

Portability

Due to differences in endianness and type sizes, data fed by Hash to a Hasher should not be considered portable across platforms. Additionally the data passed by most standard library types should not be considered stable between compiler versions.

This means tests shouldn’t probe hard-coded hash values or data fed to a Hasher and instead should check consistency with Eq.

Serialization formats intended to be portable between platforms or compiler versions should either avoid encoding hashes or only rely on Hash and Hasher implementations that provide additional guarantees.

Required Methods§

source

fn hash<H>(&self, state: &mut H)where H: Hasher,

Feeds this value into the given Hasher.

Examples
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};

let mut hasher = DefaultHasher::new();
7920.hash(&mut hasher);
println!("Hash is {:x}!", hasher.finish());

Provided Methods§

1.3.0 · source

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher.

This method is meant as a convenience, but its implementation is also explicitly left unspecified. It isn’t guaranteed to be equivalent to repeated calls of hash and implementations of Hash should keep that in mind and call hash themselves if the slice isn’t treated as a whole unit in the PartialEq implementation.

For example, a VecDeque implementation might naïvely call as_slices and then hash_slice on each slice, but this is wrong since the two slices can change with a call to make_contiguous without affecting the PartialEq result. Since these slices aren’t treated as singular units, and instead part of a larger deque, this method cannot be used.

Examples
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};

let mut hasher = DefaultHasher::new();
let numbers = [6, 28, 496, 8128];
Hash::hash_slice(&numbers, &mut hasher);
println!("Hash is {:x}!", hasher.finish());

Implementors§

source§

impl Hash for std_prelude::AtomicOrdering

source§

impl Hash for std_prelude::Ordering

1.44.0 · source§

impl Hash for Infallible

source§

impl Hash for Which

1.7.0 · source§

impl Hash for IpAddr

source§

impl Hash for Ipv6MulticastScope

source§

impl Hash for SocketAddr

source§

impl Hash for ErrorKind

const: unstable · source§

impl Hash for bool

const: unstable · source§

impl Hash for char

const: unstable · source§

impl Hash for i8

const: unstable · source§

impl Hash for i16

const: unstable · source§

impl Hash for i32

const: unstable · source§

impl Hash for i64

const: unstable · source§

impl Hash for i128

const: unstable · source§

impl Hash for isize

1.29.0 (const: unstable) · source§

impl Hash for !

const: unstable · source§

impl Hash for str

const: unstable · source§

impl Hash for u8

const: unstable · source§

impl Hash for u16

const: unstable · source§

impl Hash for u32

const: unstable · source§

impl Hash for u64

const: unstable · source§

impl Hash for u128

const: unstable · source§

impl Hash for ()

const: unstable · source§

impl Hash for usize

1.64.0 · source§

impl Hash for CString

source§

impl Hash for String

1.28.0 · source§

impl Hash for Layout

source§

impl Hash for TypeId

1.64.0 · source§

impl Hash for CStr

source§

impl Hash for Error

1.33.0 · source§

impl Hash for PhantomPinned

source§

impl Hash for Ipv4Addr

source§

impl Hash for Ipv6Addr

source§

impl Hash for SocketAddrV4

source§

impl Hash for SocketAddrV6

1.34.0 · source§

impl Hash for NonZeroI8

1.34.0 · source§

impl Hash for NonZeroI16

1.34.0 · source§

impl Hash for NonZeroI32

1.34.0 · source§

impl Hash for NonZeroI64

1.34.0 · source§

impl Hash for NonZeroI128

1.34.0 · source§

impl Hash for NonZeroIsize

1.28.0 · source§

impl Hash for NonZeroU8

1.28.0 · source§

impl Hash for NonZeroU16

1.28.0 · source§

impl Hash for NonZeroU32

1.28.0 · source§

impl Hash for NonZeroU64

1.28.0 · source§

impl Hash for NonZeroU128

1.28.0 · source§

impl Hash for NonZeroUsize

source§

impl Hash for RangeFull

source§

impl Hash for Alignment

source§

impl Hash for OsStr

1.1.0 · source§

impl Hash for FileType

source§

impl Hash for UCred

source§

impl Hash for PrefixComponent<'_>

1.19.0 · source§

impl Hash for ThreadId

1.8.0 · source§

impl Hash for Instant

1.8.0 · source§

impl Hash for SystemTime

1.3.0 · source§

impl Hash for Duration

source§

impl Hash for OsString

source§

impl Hash for Path

source§

impl Hash for PathBuf

source§

impl<'a> Hash for Component<'a>

source§

impl<'a> Hash for Prefix<'a>

1.10.0 · source§

impl<'a> Hash for Location<'a>

source§

impl<B> Hash for Cow<'_, B>where B: Hash + ToOwned + ?Sized,

1.55.0 · source§

impl<B, C> Hash for ControlFlow<B, C>where B: Hash, C: Hash,

source§

impl<Dyn> Hash for DynMetadata<Dyn>where Dyn: ?Sized,

source§

impl<Idx> Hash for Range<Idx>where Idx: Hash,

source§

impl<Idx> Hash for RangeFrom<Idx>where Idx: Hash,

1.26.0 · source§

impl<Idx> Hash for RangeInclusive<Idx>where Idx: Hash,

source§

impl<Idx> Hash for RangeTo<Idx>where Idx: Hash,

1.26.0 · source§

impl<Idx> Hash for RangeToInclusive<Idx>where Idx: Hash,

source§

impl<K, V, A> Hash for BTreeMap<K, V, A>where K: Hash, V: Hash, A: Allocator + Clone,

1.41.0 · source§

impl<P> Hash for Pin<P>where P: Deref, <P as Deref>::Target: Hash,

1.4.0 · source§

impl<Ret, T> Hash for fn (T₁, T₂, …, Tₙ) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

1.4.0 · source§

impl<Ret, T> Hash for extern "C" fn (T₁, T₂, …, Tₙ) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

1.4.0 · source§

impl<Ret, T> Hash for extern "C" fn (T₁, T₂, …, Tₙ, ...) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

source§

impl<Ret, T> Hash for extern "C-unwind" fn (T₁, T₂, …, Tₙ) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

source§

impl<Ret, T> Hash for extern "C-unwind" fn (T₁, T₂, …, Tₙ, ...) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

1.4.0 · source§

impl<Ret, T> Hash for unsafe fn (T₁, T₂, …, Tₙ) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

1.4.0 · source§

impl<Ret, T> Hash for unsafe extern "C" fn (T₁, T₂, …, Tₙ) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

1.4.0 · source§

impl<Ret, T> Hash for unsafe extern "C" fn (T₁, T₂, …, Tₙ, ...) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

source§

impl<Ret, T> Hash for unsafe extern "C-unwind" fn (T₁, T₂, …, Tₙ) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

source§

impl<Ret, T> Hash for unsafe extern "C-unwind" fn (T₁, T₂, …, Tₙ, ...) -> Ret

This trait is implemented for function pointers with up to twelve arguments.

1.17.0 · source§

impl<T> Hash for Bound<T>where T: Hash,

source§

impl<T> Hash for Option<T>where T: Hash,

1.36.0 · source§

impl<T> Hash for Poll<T>where T: Hash,

source§

impl<T> Hash for *const Twhere T: ?Sized,

source§

impl<T> Hash for *mut Twhere T: ?Sized,

const: unstable · source§

impl<T> Hash for &Twhere T: Hash + ?Sized,

const: unstable · source§

impl<T> Hash for &mut Twhere T: Hash + ?Sized,

const: unstable · source§

impl<T> Hash for [T]where T: Hash,

const: unstable · source§

impl<T> Hash for (T₁, T₂, …, Tₙ)where T: Hash + ?Sized,

This trait is implemented for tuples up to twelve items long.

source§

impl<T> Hash for LinkedList<T>where T: Hash,

1.19.0 · source§

impl<T> Hash for Reverse<T>where T: Hash,

source§

impl<T> Hash for PhantomData<T>where T: ?Sized,

1.20.0 · source§

impl<T> Hash for ManuallyDrop<T>where T: Hash + ?Sized,

1.21.0 · source§

impl<T> Hash for Discriminant<T>

source§

impl<T> Hash for Saturating<T>where T: Hash,

source§

impl<T> Hash for Wrapping<T>where T: Hash,

1.25.0 · source§

impl<T> Hash for NonNull<T>where T: ?Sized,

source§

impl<T> Hash for Arc<T>where T: Hash + ?Sized,

source§

impl<T> Hash for Rc<T>where T: Hash + ?Sized,

source§

impl<T, A> Hash for Box<T, A>where T: Hash + ?Sized, A: Allocator,

source§

impl<T, A> Hash for BTreeSet<T, A>where T: Hash, A: Allocator + Clone,

source§

impl<T, A> Hash for VecDeque<T, A>where T: Hash, A: Allocator,

source§

impl<T, A> Hash for Vec<T, A>where T: Hash, A: Allocator,

The hash of a vector is the same as that of the corresponding slice, as required by the core::borrow::Borrow implementation.

#![feature(build_hasher_simple_hash_one)]
use std::hash::BuildHasher;

let b = std::collections::hash_map::RandomState::new();
let v: Vec<u8> = vec![0xa8, 0x3c, 0x09];
let s: &[u8] = &[0xa8, 0x3c, 0x09];
assert_eq!(b.hash_one(v), b.hash_one(s));
source§

impl<T, E> Hash for Result<T, E>where T: Hash, E: Hash,

source§

impl<T, const LANES: usize> Hash for Simd<T, LANES>where LaneCount<LANES>: SupportedLaneCount, T: SimdElement + Hash,

source§

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

The hash of an array is the same as that of the corresponding slice, as required by the Borrow implementation.

#![feature(build_hasher_simple_hash_one)]
use std::hash::BuildHasher;

let b = std::collections::hash_map::RandomState::new();
let a: [u8; 3] = [0xa8, 0x3c, 0x09];
let s: &[u8] = &[0xa8, 0x3c, 0x09];
assert_eq!(b.hash_one(a), b.hash_one(s));
source§

impl<Y, R> Hash for GeneratorState<Y, R>where Y: Hash, R: Hash,

impl Hash for Span

impl Hash for StateID

impl Hash for PatternID

impl Hash for Match

impl Hash for RgbColor

impl Hash for Style

impl Hash for Reset

impl Hash for Color

impl Hash for Effects

impl Hash for AnsiColor

impl Hash for S3AclOption

impl Hash for Region

impl Hash for BStr

impl Hash for BString

impl Hash for BytesMut

impl Hash for Bytes

impl<S: Storage> Hash for StrInner<S>

impl Hash for ByteSize

impl Hash for Weekday

impl Hash for IsoWeek

impl Hash for NaiveDate

impl Hash for NaiveTime

impl Hash for Months

impl Hash for Utc

impl<T: Hash> Hash for LocalResult<T>

impl<Tz: TimeZone> Hash for Date<Tz>

impl Hash for Fixed

impl Hash for Days

impl<Tz: TimeZone> Hash for DateTime<Tz>

impl Hash for Month

impl Hash for Parsed

impl Hash for ParseError

impl<'a> Hash for Item<'a>

impl Hash for Pad

impl Hash for Numeric

impl Hash for FixedOffset

impl Hash for Tz

impl Hash for ContextKind

impl Hash for ValueHint

impl Hash for Id

impl Hash for OsStr

impl Hash for ErrorKind

impl Hash for Str

impl Hash for ValueRange

impl<T: Hash> Hash for Resettable<T>

impl<'s> Hash for ParsedArg<'s>

impl Hash for Key

impl<L: Hash, R: Hash> Hash for Either<L, R>

impl Hash for WriteStyle

impl Hash for PollNext

impl<T: Hash, N> Hash for GenericArray<T, N>where N: ArrayLength<T>,

impl Hash for Range

impl Hash for DwForm

impl Hash for DwAddr

impl Hash for DwOrd

impl<T: Hash> Hash for UnitOffset<T>

impl Hash for DwOp

impl<R: Hash + Reader> Hash for Expression<R>

impl Hash for DwId

impl Hash for DwVis

impl Hash for DwoId

impl Hash for DwDsc

impl Hash for DwCc

impl<T: Hash> Hash for DebugTypesOffset<T>

impl<T: Hash> Hash for LocationListsOffset<T>

impl<T: Hash> Hash for RangeListsOffset<T>

impl Hash for DwSect

impl<T: Hash> Hash for UnitSectionOffset<T>

impl Hash for DwAccess

impl<'input, Endian> Hash for EndianSlice<'input, Endian>where Endian: Endianity + Hash,

impl Hash for DwDefaulted

impl Hash for DwTag

impl Hash for DwUt

impl<T: Hash> Hash for DebugFrameOffset<T>

impl<R: Hash + Reader> Hash for LocationListEntry<R>

impl<T: Hash> Hash for DebugMacinfoOffset<T>

impl<T: Hash> Hash for DebugAbbrevOffset<T>

impl Hash for Encoding

impl Hash for Register

impl Hash for DwAt

impl<T: Hash> Hash for RawRangeListsOffset<T>

impl Hash for DwLle

impl Hash for DwSectV2

impl Hash for DwIdx

impl Hash for DwCfa

impl<T: Hash> Hash for EhFrameOffset<T>

impl Hash for SectionId

impl Hash for BigEndian

impl Hash for DwAte

impl Hash for DwLnct

impl Hash for DwChildren

impl Hash for Format

impl Hash for DwMacro

impl Hash for DwLne

impl Hash for DwRle

impl Hash for DwInl

impl Hash for DwDs

impl Hash for DwEnd

impl<T: Hash> Hash for DebugInfoOffset<T>

impl Hash for DwEhPe

impl<T: Hash> Hash for DebugMacroOffset<T>

impl Hash for DwLang

impl Hash for DwLns

impl Hash for Status

impl Hash for Sort

impl Hash for Oid

impl Hash for StashFlags

impl Hash for DiffFlags

impl Hash for Glob

impl Hash for FileType

impl Hash for StreamId

impl Hash for Version

impl Hash for Uri

impl Hash for HeaderValue

impl Hash for HeaderName

impl Hash for Scheme

impl Hash for StatusCode

impl Hash for Authority

impl Hash for Method

impl Hash for HttpDate

impl Hash for Duration

impl Hash for Name

impl Hash for genlmsghdr

impl Hash for sockaddr_ll

impl Hash for Elf32_Ehdr

impl Hash for Elf64_Sym

impl Hash for pollfd

impl Hash for msginfo

impl Hash for input_id

impl Hash for tm

impl Hash for sigset_t

impl Hash for cpu_set_t

impl Hash for sembuf

impl Hash for sctp_prinfo

impl Hash for af_alg_iv

impl Hash for passwd

impl Hash for epoll_event

impl Hash for siginfo_t

impl Hash for sysinfo

impl Hash for packet_mreq

impl Hash for Elf64_Shdr

impl Hash for rtentry

impl Hash for flock

impl Hash for hostent

impl Hash for seminfo

impl Hash for nlmsghdr

impl Hash for mntent

impl Hash for sigaction

impl Hash for Elf64_Phdr

impl Hash for statvfs64

impl Hash for group

impl Hash for mmsghdr

impl Hash for clone_args

impl Hash for protoent

impl Hash for ntptimeval

impl Hash for Elf32_Sym

impl Hash for dirent

impl Hash for input_mask

impl Hash for rlimit64

impl Hash for mq_attr

impl Hash for in6_addr

impl Hash for sockaddr_vm

impl Hash for sock_filter

impl Hash for in6_ifreq

impl Hash for termios2

impl Hash for ipc_perm

impl Hash for sock_fprog

impl Hash for in6_pktinfo

impl Hash for sched_param

impl Hash for utsname

impl Hash for ff_trigger

impl Hash for ip_mreq

impl Hash for nl_pktinfo

impl Hash for timespec

impl Hash for winsize

impl Hash for sigval

impl Hash for statfs64

impl Hash for rlimit

impl Hash for semid_ds

impl Hash for Elf32_Phdr

impl Hash for arpreq

impl Hash for sigevent

impl Hash for dqblk

impl Hash for sockaddr_un

impl Hash for timex

impl Hash for in6_rtmsg

impl Hash for __timeval

impl Hash for stat

impl Hash for dirent64

impl Hash for aiocb

impl Hash for Elf32_Shdr

impl Hash for ucred

impl Hash for timeval

impl Hash for arpreq_old

impl Hash for input_event

impl Hash for ff_replay

impl Hash for ff_envelope

impl Hash for ucontext_t

impl Hash for option

impl Hash for utimbuf

impl Hash for stat64

impl Hash for rusage

impl Hash for spwd

impl Hash for sockaddr

impl Hash for fsid_t

impl Hash for sockaddr_in

impl Hash for can_filter

impl Hash for ifaddrs

impl Hash for in_pktinfo

impl Hash for Elf32_Chdr

impl Hash for statx

impl Hash for msqid_ds

impl Hash for mallinfo

impl Hash for mallinfo2

impl Hash for itimerval

impl Hash for statfs

impl Hash for Elf64_Ehdr

impl Hash for tms

impl Hash for Elf64_Chdr

impl Hash for sockaddr_nl

impl Hash for nl_mmap_hdr

impl Hash for nlattr

impl Hash for regex_t

impl Hash for user

impl Hash for addrinfo

impl Hash for lconv

impl Hash for itimerspec

impl Hash for ipv6_mreq

impl Hash for arphdr

impl Hash for glob_t

impl Hash for ff_effect

impl Hash for nl_mmap_req

impl Hash for glob64_t

impl Hash for stack_t

impl Hash for sem_t

impl Hash for msghdr

impl Hash for flock64

impl Hash for nlmsgerr

impl Hash for ip_mreqn

impl Hash for utmpx

impl Hash for mcontext_t

impl Hash for fd_set

impl Hash for statvfs

impl Hash for shmid_ds

impl Hash for Dl_info

impl Hash for in_addr

impl Hash for open_how

impl Hash for linger

impl Hash for servent

impl Hash for iovec

impl Hash for termios

impl Hash for regmatch_t

impl Hash for cmsghdr

impl<K: Hash + Eq, V: Hash, S: BuildHasher> Hash for LinkedHashMap<K, V, S>

impl<Storage: Hash> Hash for __BindgenBitfieldUnit<Storage>

impl Hash for io_uring_op

impl<T> Hash for __BindgenUnionField<T>

impl<'a> Hash for MetadataBuilder<'a>

impl Hash for Level

impl Hash for LevelFilter

impl<'a> Hash for Metadata<'a>

impl Hash for MZError

impl Hash for MZStatus

impl Hash for DataFormat

impl Hash for TDEFLFlush

impl Hash for TINFLStatus

impl Hash for TDEFLStatus

impl Hash for MZFlush

impl Hash for Token

impl Hash for BigEndian

impl<E: Hash + Endian> Hash for I64Bytes<E>

impl Hash for SymbolScope

impl<Section: Hash> Hash for SymbolFlags<Section>

impl<E: Hash + Endian> Hash for I32Bytes<E>

impl Hash for ObjectKind

impl Hash for SectionKind

impl<'data> Hash for CompressedData<'data>

impl<'data> Hash for ObjectMapEntry<'data>

impl<E: Hash + Endian> Hash for U32Bytes<E>

impl Hash for ComdatKind

impl<E: Hash + Endian> Hash for U16Bytes<E>

impl Hash for AddressSize

impl Hash for ArchiveKind

impl Hash for FileKind

impl<E: Hash + Endian> Hash for I16Bytes<E>

impl Hash for FileFlags

impl Hash for Endianness

impl Hash for SymbolIndex

impl<'data> Hash for SymbolMapName<'data>

impl Hash for SymbolKind

impl<E: Hash + Endian> Hash for U64Bytes<E>

impl Hash for PathDir

impl Hash for PathFile

impl Hash for PathAbs

impl Hash for PathType

impl<R: Hash> Hash for Error<R>

impl<R: Hash> Hash for ErrorVariant<R>

impl<'i> Hash for Position<'i>

impl<'i, R: Hash> Hash for Pair<'i, R>

impl<'i, R: Hash> Hash for Token<'i, R>

impl<'i, R: Hash> Hash for Pairs<'i, R>

impl<'i> Hash for Span<'i>

impl Hash for Rule

impl Hash for Date

impl Hash for Integer

impl Hash for Uid

impl Hash for Ident

impl<'ns> Hash for ResolveResult<'ns>

impl<'a> Hash for Namespace<'a>

impl<'a> Hash for LocalName<'a>

impl<'a> Hash for Prefix<'a>

impl<'a> Hash for PrefixDeclaration<'a>

impl<'a> Hash for QName<'a>

impl<T: Hash> Hash for Attr<T>

impl<ComponentType: Hash, AlphaComponentType: Hash> Hash for RGBA<ComponentType, AlphaComponentType>

impl<ComponentType: Hash> Hash for Gray<ComponentType>

impl<ComponentType: Hash, AlphaComponentType: Hash> Hash for GrayAlpha<ComponentType, AlphaComponentType>

impl<ComponentType: Hash, AlphaComponentType: Hash> Hash for BGRA<ComponentType, AlphaComponentType>

impl<ComponentType: Hash> Hash for BGR<ComponentType>

impl<ComponentType: Hash> Hash for RGB<ComponentType>

impl Hash for Errno

impl Hash for FdFlags

impl Hash for Action

impl Hash for CreateFlags

impl Hash for SpliceFlags

impl Hash for PipeFlags

impl Hash for PollFlags

impl Hash for DupFlags

impl Hash for EventFlags

impl Hash for ServerName

impl Hash for Certificate

impl Hash for Handle

impl Hash for Version

impl Hash for Comparator

impl Hash for Prerelease

impl Hash for VersionReq

impl Hash for Op

impl Hash for Number

impl Hash for Value

impl Hash for Number

impl Hash for Mapping

impl Hash for SigId

impl<A: Array> Hash for SmallVec<A>where A::Item: Hash,

impl Hash for Style

impl Hash for ContextId

impl Hash for FontStyle

impl Hash for Scope

impl Hash for Color

impl Hash for Weekday

impl Hash for UtcOffset

impl Hash for Duration

impl Hash for Month

impl Hash for Instant

impl Hash for Date

impl Hash for Time

impl<A: Array> Hash for TinyVec<A>where A::Item: Hash,

impl<A: Array> Hash for ArrayVec<A>where A::Item: Hash,

impl<'s, T> Hash for SliceVec<'s, T>where T: Hash,

impl Hash for SignalKind

impl Hash for Instant

impl Hash for UCred

impl Hash for LinesCodec

impl Hash for BytesCodec

impl Hash for Span

impl Hash for LevelFilter

impl Hash for Id

impl Hash for Level

impl Hash for Field

impl Hash for Identifier

impl<U: Hash, B: Hash> Hash for UInt<U, B>

impl Hash for B1

impl<U: Hash + Unsigned + NonZero> Hash for NInt<U>

impl<V: Hash, A: Hash> Hash for TArr<V, A>

impl Hash for Equal

impl Hash for Greater

impl Hash for Z0

impl<U: Hash + Unsigned + NonZero> Hash for PInt<U>

impl Hash for B0

impl Hash for ATerm

impl Hash for Less

impl Hash for UTerm

impl Hash for UncasedStr

impl Hash for WordBreak

impl Hash for Url

impl Hash for Origin

impl<S: Hash> Hash for Host<S>

impl<Str: Hash> Hash for Encoded<Str>

impl Hash for DnsName

impl<'a> Hash for Reference<'a>

impl<'a> Hash for Stream<'a>

impl<'a> Hash for Token<'a>

impl Hash for StreamError

impl<'a> Hash for EntityDefinition<'a>

impl<'a> Hash for ElementEnd<'a>

impl Hash for TextPos

impl<'a> Hash for StrSpan<'a>

impl Hash for Error

impl<'a> Hash for ExternalId<'a>

impl Hash for Yaml