pub trait Eq: PartialEq { }
Expand description
Trait for comparisons corresponding to equivalence relations.
The primary difference to PartialEq
is the additional requirement for reflexivity. A type
that implements PartialEq
guarantees that for all a
, b
and c
:
- symmetric:
a == b
impliesb == a
anda != b
implies!(a == b)
- transitive:
a == b
andb == c
impliesa == c
Eq
, which builds on top of PartialEq
also implies:
- reflexive:
a == a
This property cannot be checked by the compiler, and therefore Eq
is a trait without methods.
Violating this property is a logic error. The behavior resulting from a logic error is not
specified, but users of the trait must ensure that such logic errors do not result in
undefined behavior. This means that unsafe
code must not rely on the correctness of these
methods.
Floating point types such as f32
and f64
implement only PartialEq
but not Eq
because NaN
!= NaN
.
§Derivable
This trait can be used with #[derive]
. When derive
d, because Eq
has no extra methods, it
is only informing the compiler that this is an equivalence relation rather than a partial
equivalence relation. Note that the derive
strategy requires all fields are Eq
, which isn’t
always desired.
§How can I implement Eq
?
If you cannot use the derive
strategy, specify that your type implements Eq
, which has no
extra methods:
enum BookFormat {
Paperback,
Hardback,
Ebook,
}
struct Book {
isbn: i32,
format: BookFormat,
}
impl PartialEq for Book {
fn eq(&self, other: &Self) -> bool {
self.isbn == other.isbn
}
}
impl Eq for Book {}
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.
Implementors§
impl Eq for TryReserveErrorKind
impl Eq for AsciiChar
impl Eq for core::cmp::Ordering
impl Eq for Infallible
impl Eq for FromBytesWithNulError
impl Eq for core::fmt::Alignment
impl Eq for DebugAsHex
impl Eq for Sign
impl Eq for IpAddr
impl Eq for Ipv6MulticastScope
impl Eq for SocketAddr
impl Eq for FpCategory
impl Eq for IntErrorKind
impl Eq for GetDisjointMutError
impl Eq for SearchStep
impl Eq for core::sync::atomic::Ordering
impl Eq for BacktraceStatus
impl Eq for VarError
impl Eq for SeekFrom
impl Eq for ErrorKind
impl Eq for Shutdown
impl Eq for BacktraceStyle
impl Eq for RecvTimeoutError
impl Eq for TryRecvError
impl Eq for json::error::Error
impl Eq for JsonValue
impl Eq for tpacket_versions
impl Eq for num_bigfloat::defs::Error
impl Eq for RoundingMode
impl Eq for BernoulliError
impl Eq for WeightedError
impl Eq for BigEndian
impl Eq for LittleEndian
impl Eq for bool
impl Eq for char
impl Eq for i8
impl Eq for i16
impl Eq for i32
impl Eq for i64
impl Eq for i128
impl Eq for isize
impl Eq for !
impl Eq for str
impl Eq for u8
impl Eq for u16
impl Eq for u32
impl Eq for u64
impl Eq for u128
impl Eq for ()
impl Eq for usize
impl Eq for BigFloat
impl Eq for ByteString
impl Eq for UnorderedKeyError
impl Eq for TryReserveError
impl Eq for CString
impl Eq for FromVecWithNulError
impl Eq for IntoStringError
impl Eq for NulError
impl Eq for FromUtf8Error
impl Eq for String
impl Eq for Layout
impl Eq for LayoutError
impl Eq for core::alloc::AllocError
impl Eq for TypeId
impl Eq for ByteStr
impl Eq for CharTryFromError
impl Eq for ParseCharError
impl Eq for DecodeUtf16Error
impl Eq for TryFromCharError
impl Eq for CpuidResult
impl Eq for CStr
impl Eq for FromBytesUntilNulError
impl Eq for core::fmt::Error
impl Eq for FormattingOptions
impl Eq for PhantomPinned
impl Eq for Assume
impl Eq for Ipv4Addr
impl Eq for Ipv6Addr
impl Eq for AddrParseError
impl Eq for SocketAddrV4
impl Eq for SocketAddrV6
impl Eq for ParseFloatError
impl Eq for ParseIntError
impl Eq for TryFromIntError
impl Eq for RangeFull
impl Eq for core::ptr::alignment::Alignment
impl Eq for ParseBoolError
impl Eq for Utf8Error
impl Eq for Duration
impl Eq for TryFromFloatSecsError
impl Eq for OsStr
impl Eq for OsString
impl Eq for FileType
impl Eq for Permissions
impl Eq for UCred
impl Eq for Components<'_>
impl Eq for Path
impl Eq for PathBuf
impl Eq for StripPrefixError
impl Eq for ExitStatus
impl Eq for ExitStatusError
impl Eq for Output
impl Eq for RecvError
impl Eq for WaitTimeoutResult
impl Eq for AccessError
impl Eq for ThreadId
impl Eq for Instant
impl Eq for SystemTime
impl Eq for futures_channel::mpsc::SendError
impl Eq for Canceled
impl Eq for getrandom::error::Error
impl Eq for termios2
impl Eq for msqid_ds
impl Eq for semid_ds
impl Eq for sigset_t
impl Eq for sysinfo
impl Eq for statvfs
impl Eq for _libc_fpstate
impl Eq for _libc_fpxreg
impl Eq for _libc_xmmreg
impl Eq for clone_args
impl Eq for flock64
impl Eq for flock
impl Eq for ipc_perm
impl Eq for mcontext_t
impl Eq for pthread_attr_t
impl Eq for ptrace_rseq_configuration
impl Eq for shmid_ds
impl Eq for sigaction
impl Eq for siginfo_t
impl Eq for stack_t
impl Eq for stat64
impl Eq for stat
impl Eq for statfs64
impl Eq for statfs
impl Eq for statvfs64
impl Eq for ucontext_t
impl Eq for user
impl Eq for user_fpregs_struct
impl Eq for user_regs_struct
impl Eq for Elf32_Chdr
impl Eq for Elf64_Chdr
impl Eq for __c_anonymous_ptrace_syscall_info_entry
impl Eq for __c_anonymous_ptrace_syscall_info_exit
impl Eq for __c_anonymous_ptrace_syscall_info_seccomp
impl Eq for __exit_status
impl Eq for __timeval
impl Eq for aiocb
impl Eq for cmsghdr
impl Eq for fanotify_event_info_error
impl Eq for fanotify_event_info_pidfd
impl Eq for fpos64_t
impl Eq for fpos_t
impl Eq for glob64_t
impl Eq for iocb
impl Eq for mallinfo2
impl Eq for mallinfo
impl Eq for mbstate_t
impl Eq for msghdr
impl Eq for nl_mmap_hdr
impl Eq for nl_mmap_req
impl Eq for nl_pktinfo
impl Eq for ntptimeval
impl Eq for ptrace_peeksiginfo_args
impl Eq for ptrace_sud_config
impl Eq for ptrace_syscall_info
impl Eq for regex_t
impl Eq for rtentry
impl Eq for sem_t
impl Eq for seminfo
impl Eq for tcp_info
impl Eq for termios
impl Eq for timex
impl Eq for utmpx
impl Eq for Elf32_Ehdr
impl Eq for Elf32_Phdr
impl Eq for Elf32_Shdr
impl Eq for Elf32_Sym
impl Eq for Elf64_Ehdr
impl Eq for Elf64_Phdr
impl Eq for Elf64_Shdr
impl Eq for Elf64_Sym
impl Eq for __c_anonymous__kernel_fsid_t
impl Eq for __c_anonymous_elf32_rel
impl Eq for __c_anonymous_elf32_rela
impl Eq for __c_anonymous_elf64_rel
impl Eq for __c_anonymous_elf64_rela
impl Eq for __c_anonymous_ifru_map
impl Eq for __c_anonymous_sockaddr_can_j1939
impl Eq for __c_anonymous_sockaddr_can_tp
impl Eq for af_alg_iv
impl Eq for arpd_request
impl Eq for can_filter
impl Eq for cpu_set_t
impl Eq for dirent64
impl Eq for dirent
impl Eq for dl_phdr_info
impl Eq for dmabuf_cmsg
impl Eq for dmabuf_token
impl Eq for dqblk
impl Eq for epoll_params
impl Eq for fanotify_event_info_fid
impl Eq for fanotify_event_info_header
impl Eq for fanotify_event_metadata
impl Eq for fanotify_response
impl Eq for fanout_args
impl Eq for ff_condition_effect
impl Eq for ff_constant_effect
impl Eq for ff_effect
impl Eq for ff_envelope
impl Eq for ff_periodic_effect
impl Eq for ff_ramp_effect
impl Eq for ff_replay
impl Eq for ff_rumble_effect
impl Eq for ff_trigger
impl Eq for file_clone_range
impl Eq for fsid_t
impl Eq for genlmsghdr
impl Eq for glob_t
impl Eq for hwtstamp_config
impl Eq for if_nameindex
impl Eq for in6_ifreq
impl Eq for in6_pktinfo
impl Eq for inotify_event
impl Eq for input_absinfo
impl Eq for input_event
impl Eq for input_id
impl Eq for input_keymap_entry
impl Eq for input_mask
impl Eq for itimerspec
impl Eq for iw_discarded
impl Eq for iw_encode_ext
impl Eq for iw_freq
impl Eq for iw_michaelmicfailure
impl Eq for iw_missed
impl Eq for iw_mlme
impl Eq for iw_param
impl Eq for iw_pmkid_cand
impl Eq for iw_pmksa
impl Eq for iw_point
impl Eq for iw_priv_args
impl Eq for iw_quality
impl Eq for iw_range
impl Eq for iw_scan_req
impl Eq for iw_statistics
impl Eq for iw_thrspy
impl Eq for j1939_filter
impl Eq for mntent
impl Eq for mount_attr
impl Eq for mq_attr
impl Eq for msginfo
impl Eq for nlattr
impl Eq for nlmsgerr
impl Eq for nlmsghdr
impl Eq for open_how
impl Eq for option
impl Eq for packet_mreq
impl Eq for passwd
impl Eq for posix_spawn_file_actions_t
impl Eq for posix_spawnattr_t
impl Eq for pthread_barrier_t
impl Eq for pthread_barrierattr_t
impl Eq for pthread_cond_t
impl Eq for pthread_condattr_t
impl Eq for pthread_mutex_t
impl Eq for pthread_mutexattr_t
impl Eq for pthread_rwlock_t
impl Eq for pthread_rwlockattr_t
impl Eq for ptp_clock_caps
impl Eq for ptp_clock_time
impl Eq for ptp_extts_event
impl Eq for ptp_extts_request
impl Eq for ptp_pin_desc
impl Eq for ptp_sys_offset
impl Eq for ptp_sys_offset_extended
impl Eq for ptp_sys_offset_precise
impl Eq for regmatch_t
impl Eq for rlimit64
impl Eq for sched_attr
impl Eq for sctp_authinfo
impl Eq for sctp_initmsg
impl Eq for sctp_nxtinfo
impl Eq for sctp_prinfo
impl Eq for sctp_rcvinfo
impl Eq for sctp_sndinfo
impl Eq for sctp_sndrcvinfo
impl Eq for seccomp_data
impl Eq for seccomp_notif
impl Eq for seccomp_notif_addfd
impl Eq for seccomp_notif_resp
impl Eq for seccomp_notif_sizes
impl Eq for sembuf
impl Eq for signalfd_siginfo
impl Eq for sock_extended_err
impl Eq for sock_filter
impl Eq for sock_fprog
impl Eq for sockaddr_alg
impl Eq for sockaddr_nl
impl Eq for sockaddr_pkt
impl Eq for sockaddr_vm
impl Eq for sockaddr_xdp
impl Eq for spwd
impl Eq for tls12_crypto_info_aes_ccm_128
impl Eq for tls12_crypto_info_aes_gcm_128
impl Eq for tls12_crypto_info_aes_gcm_256
impl Eq for tls12_crypto_info_aria_gcm_128
impl Eq for tls12_crypto_info_aria_gcm_256
impl Eq for tls12_crypto_info_chacha20_poly1305
impl Eq for tls12_crypto_info_sm4_ccm
impl Eq for tls12_crypto_info_sm4_gcm
impl Eq for tls_crypto_info
impl Eq for tpacket2_hdr
impl Eq for tpacket3_hdr
impl Eq for tpacket_auxdata
impl Eq for tpacket_bd_ts
impl Eq for tpacket_hdr
impl Eq for tpacket_hdr_v1
impl Eq for tpacket_hdr_variant1
impl Eq for tpacket_req3
impl Eq for tpacket_req
impl Eq for tpacket_rollover_stats
impl Eq for tpacket_stats
impl Eq for tpacket_stats_v3
impl Eq for ucred
impl Eq for uinput_abs_setup
impl Eq for uinput_ff_erase
impl Eq for uinput_ff_upload
impl Eq for uinput_setup
impl Eq for uinput_user_dev
impl Eq for xdp_desc
impl Eq for xdp_mmap_offsets
impl Eq for xdp_mmap_offsets_v1
impl Eq for xdp_options
impl Eq for xdp_ring_offset
impl Eq for xdp_ring_offset_v1
impl Eq for xdp_statistics
impl Eq for xdp_statistics_v1
impl Eq for xdp_umem_reg
impl Eq for xdp_umem_reg_v1
impl Eq for xsk_tx_metadata_completion
impl Eq for xsk_tx_metadata_request
impl Eq for Dl_info
impl Eq for addrinfo
impl Eq for arphdr
impl Eq for arpreq
impl Eq for arpreq_old
impl Eq for epoll_event
impl Eq for fd_set
impl Eq for ifaddrs
impl Eq for in6_rtmsg
impl Eq for in_addr
impl Eq for in_pktinfo
impl Eq for ip_mreq
impl Eq for ip_mreq_source
impl Eq for ip_mreqn
impl Eq for lconv
impl Eq for mmsghdr
impl Eq for sched_param
impl Eq for sigevent
impl Eq for sockaddr
impl Eq for sockaddr_in6
impl Eq for sockaddr_in
impl Eq for sockaddr_ll
impl Eq for sockaddr_storage
impl Eq for sockaddr_un
impl Eq for statx
impl Eq for statx_timestamp
impl Eq for tm
impl Eq for utsname
impl Eq for group
impl Eq for hostent
impl Eq for in6_addr
impl Eq for iovec
impl Eq for ipv6_mreq
impl Eq for itimerval
impl Eq for linger
impl Eq for pollfd
impl Eq for protoent
impl Eq for rlimit
impl Eq for rusage
impl Eq for servent
impl Eq for sigval
impl Eq for timespec
impl Eq for timeval
impl Eq for tms
impl Eq for utimbuf
impl Eq for winsize
impl Eq for StepRng
impl Eq for StdRng
impl Eq for ChaCha8Core
impl Eq for ChaCha8Rng
impl Eq for ChaCha12Core
impl Eq for ChaCha12Rng
impl Eq for ChaCha20Core
impl Eq for ChaCha20Rng
impl Eq for zerocopy::error::AllocError
impl Eq for __c_anonymous_ptrace_syscall_info_data
impl Eq for vec128_storage
impl Eq for vec256_storage
impl Eq for vec512_storage
impl<'a> Eq for Utf8Pattern<'a>
impl<'a> Eq for Component<'a>
impl<'a> Eq for Prefix<'a>
impl<'a> Eq for PhantomContravariantLifetime<'a>
impl<'a> Eq for PhantomCovariantLifetime<'a>
impl<'a> Eq for PhantomInvariantLifetime<'a>
impl<'a> Eq for Location<'a>
impl<'a> Eq for Utf8Chunk<'a>
impl<'a> Eq for PrefixComponent<'a>
impl<A> Eq for &A
impl<A> Eq for &mut A
impl<A, S, V> Eq for ConvertError<A, S, V>
impl<B> Eq for Cow<'_, B>
impl<B, C> Eq for ControlFlow<B, C>
impl<Dyn> Eq for DynMetadata<Dyn>where
Dyn: ?Sized,
impl<F> Eq for Fwhere
F: FnPtr,
impl<H> Eq for BuildHasherDefault<H>
impl<Idx> Eq for core::ops::range::Range<Idx>where
Idx: Eq,
impl<Idx> Eq for core::ops::range::RangeFrom<Idx>where
Idx: Eq,
impl<Idx> Eq for core::ops::range::RangeInclusive<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeTo<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeToInclusive<Idx>where
Idx: Eq,
impl<Idx> Eq for core::range::Range<Idx>where
Idx: Eq,
impl<Idx> Eq for core::range::RangeFrom<Idx>where
Idx: Eq,
impl<Idx> Eq for core::range::RangeInclusive<Idx>where
Idx: Eq,
impl<K, V, A> Eq for BTreeMap<K, V, A>
impl<K, V, S> Eq for HashMap<K, V, S>
impl<O> Eq for F32<O>where
O: Eq,
impl<O> Eq for F64<O>where
O: Eq,
impl<O> Eq for I16<O>where
O: Eq,
impl<O> Eq for I32<O>where
O: Eq,
impl<O> Eq for I64<O>where
O: Eq,
impl<O> Eq for I128<O>where
O: Eq,
impl<O> Eq for Isize<O>where
O: Eq,
impl<O> Eq for U16<O>where
O: Eq,
impl<O> Eq for U32<O>where
O: Eq,
impl<O> Eq for U64<O>where
O: Eq,
impl<O> Eq for U128<O>where
O: Eq,
impl<O> Eq for Usize<O>where
O: Eq,
impl<Ptr> Eq for Pin<Ptr>
impl<Src, Dst> Eq for AlignmentError<Src, Dst>
impl<Src, Dst> Eq for SizeError<Src, Dst>
impl<Src, Dst> Eq for ValidityError<Src, Dst>
impl<T> Eq for Option<T>where
T: Eq,
impl<T> Eq for Bound<T>where
T: Eq,
impl<T> Eq for Poll<T>where
T: Eq,
impl<T> Eq for SendTimeoutError<T>where
T: Eq,
impl<T> Eq for std::sync::mpsc::TrySendError<T>where
T: Eq,
impl<T> Eq for *const Twhere
T: ?Sized,
Pointer equality is an equivalence relation.
impl<T> Eq for *mut Twhere
T: ?Sized,
Pointer equality is an equivalence relation.
impl<T> Eq for [T]where
T: Eq,
impl<T> Eq for (T₁, T₂, …, Tₙ)
This trait is implemented for tuples up to twelve items long.