Skip to main content

Eq

Trait Eq 

1.0.0 (const: unstable) · Source
pub(crate) 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 implies b == a
  • transitive: a == b and b == c implies a == c
  • consistent: a != b if and only if !(a == b)

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 derived, 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§

Source§

impl Eq for tpacket_versions

1.28.0 · Source§

impl Eq for libc::prelude::fmt::Alignment

Source§

impl Eq for DebugAsHex

Source§

impl Eq for Sign

Source§

impl Eq for AsciiChar

Source§

impl Eq for CharCase

1.0.0 (const: unstable) · Source§

impl Eq for core::cmp::Ordering

1.34.0 (const: unstable) · Source§

impl Eq for Infallible

1.64.0 · Source§

impl Eq for FromBytesWithNulError

Source§

impl Eq for Locality

Source§

impl Eq for AtomicOrdering

Source§

impl Eq for SimdAlign

1.0.0 · Source§

impl Eq for ErrorKind

1.7.0 · Source§

impl Eq for IpAddr

Source§

impl Eq for Ipv6MulticastScope

1.0.0 · Source§

impl Eq for SocketAddr

1.0.0 · Source§

impl Eq for FpCategory

1.55.0 · Source§

impl Eq for IntErrorKind

1.86.0 · Source§

impl Eq for GetDisjointMutError

Source§

impl Eq for SearchStep

1.0.0 · Source§

impl Eq for core::sync::atomic::Ordering

1.0.0 (const: unstable) · Source§

impl Eq for bool

1.0.0 (const: unstable) · Source§

impl Eq for char

1.0.0 (const: unstable) · Source§

impl Eq for i8

1.0.0 (const: unstable) · Source§

impl Eq for i16

1.0.0 (const: unstable) · Source§

impl Eq for i32

1.0.0 (const: unstable) · Source§

impl Eq for i64

1.0.0 (const: unstable) · Source§

impl Eq for i128

1.0.0 (const: unstable) · Source§

impl Eq for isize

Source§

impl Eq for !

1.0.0 (const: unstable) · Source§

impl Eq for str

1.0.0 (const: unstable) · Source§

impl Eq for u8

1.0.0 (const: unstable) · Source§

impl Eq for u16

1.0.0 (const: unstable) · Source§

impl Eq for u32

1.0.0 (const: unstable) · Source§

impl Eq for u64

1.0.0 (const: unstable) · Source§

impl Eq for u128

1.0.0 (const: unstable) · Source§

impl Eq for ()

1.0.0 (const: unstable) · Source§

impl Eq for usize

Source§

impl Eq for Dl_info

Source§

impl Eq for Elf32_Chdr

Source§

impl Eq for Elf32_Ehdr

Source§

impl Eq for Elf32_Phdr

Source§

impl Eq for Elf32_Shdr

Source§

impl Eq for Elf32_Sym

Source§

impl Eq for Elf64_Chdr

Source§

impl Eq for Elf64_Ehdr

Source§

impl Eq for Elf64_Phdr

Source§

impl Eq for Elf64_Shdr

Source§

impl Eq for Elf64_Sym

Source§

impl Eq for __c_anonymous__kernel_fsid_t

Source§

impl Eq for __c_anonymous_elf32_rel

Source§

impl Eq for __c_anonymous_elf32_rela

Source§

impl Eq for __c_anonymous_elf64_rel

Source§

impl Eq for __c_anonymous_elf64_rela

Source§

impl Eq for __c_anonymous_ifru_map

Source§

impl Eq for __c_anonymous_ptrace_syscall_info_entry

Source§

impl Eq for __c_anonymous_ptrace_syscall_info_exit

Source§

impl Eq for __c_anonymous_ptrace_syscall_info_seccomp

Source§

impl Eq for __c_anonymous_sockaddr_can_j1939

Source§

impl Eq for __c_anonymous_sockaddr_can_tp

Source§

impl Eq for __exit_status

Source§

impl Eq for __timeval

Source§

impl Eq for _libc_fpstate

Source§

impl Eq for _libc_fpxreg

Source§

impl Eq for _libc_xmmreg

Source§

impl Eq for addrinfo

Source§

impl Eq for aiocb

Source§

impl Eq for arpd_request

Source§

impl Eq for arphdr

Source§

impl Eq for arpreq

Source§

impl Eq for arpreq_old

Source§

impl Eq for bcm_msg_head

Source§

impl Eq for bcm_timeval

Source§

impl Eq for can_berr_counter

Source§

impl Eq for can_bittiming

Source§

impl Eq for can_bittiming_const

Source§

impl Eq for can_clock

Source§

impl Eq for can_ctrlmode

Source§

impl Eq for can_device_stats

Source§

impl Eq for can_filter

Source§

impl Eq for can_frame

Source§

impl Eq for canfd_frame

Source§

impl Eq for canxl_frame

Source§

impl Eq for clone_args

Source§

impl Eq for cmsghdr

Source§

impl Eq for cpu_set_t

Source§

impl Eq for dirent64

Source§

impl Eq for dirent

Source§

impl Eq for dl_phdr_info

Source§

impl Eq for dmabuf_cmsg

Source§

impl Eq for dmabuf_token

Source§

impl Eq for dqblk

Source§

impl Eq for epoll_event

Available on crate feature extra_traits and non-L4Re only.
Source§

impl Eq for epoll_params

Source§

impl Eq for fanotify_event_info_error

Source§

impl Eq for fanotify_event_info_fid

Source§

impl Eq for fanotify_event_info_header

Source§

impl Eq for fanotify_event_info_pidfd

Source§

impl Eq for fanotify_event_metadata

Source§

impl Eq for fanotify_response

Source§

impl Eq for fanout_args

Source§

impl Eq for fd_set

Source§

impl Eq for ff_condition_effect

Source§

impl Eq for ff_constant_effect

Source§

impl Eq for ff_effect

Source§

impl Eq for ff_envelope

Source§

impl Eq for ff_periodic_effect

Source§

impl Eq for ff_ramp_effect

Source§

impl Eq for ff_replay

Source§

impl Eq for ff_rumble_effect

Source§

impl Eq for ff_trigger

Source§

impl Eq for file_clone_range

Source§

impl Eq for file_handle

Source§

impl Eq for flock64

Source§

impl Eq for flock

Source§

impl Eq for fpos64_t

Source§

impl Eq for fpos_t

Source§

impl Eq for fsid_t

Source§

impl Eq for futex_waitv

Source§

impl Eq for genlmsghdr

Source§

impl Eq for glob64_t

Source§

impl Eq for glob_t

Source§

impl Eq for group

Source§

impl Eq for group_req

Source§

impl Eq for group_source_req

Source§

impl Eq for hostent

Source§

impl Eq for hwtstamp_config

Source§

impl Eq for if_nameindex

Source§

impl Eq for ifaddrmsg

Source§

impl Eq for ifaddrs

Source§

impl Eq for ifinfomsg

Source§

impl Eq for in6_addr

Source§

impl Eq for in6_ifreq

Source§

impl Eq for in6_pktinfo

Source§

impl Eq for in6_rtmsg

Source§

impl Eq for in_addr

Source§

impl Eq for in_pktinfo

Source§

impl Eq for inotify_event

Source§

impl Eq for input_absinfo

Source§

impl Eq for input_event

Source§

impl Eq for input_id

Source§

impl Eq for input_keymap_entry

Source§

impl Eq for input_mask

Source§

impl Eq for iocb

Source§

impl Eq for iovec

Source§

impl Eq for ip_mreq

Source§

impl Eq for ip_mreq_source

Source§

impl Eq for ip_mreqn

Source§

impl Eq for ipc_perm

Source§

impl Eq for ipv6_mreq

Source§

impl Eq for itimerspec

Source§

impl Eq for itimerval

Source§

impl Eq for iw_discarded

Source§

impl Eq for iw_encode_ext

Source§

impl Eq for iw_freq

Source§

impl Eq for iw_michaelmicfailure

Source§

impl Eq for iw_missed

Source§

impl Eq for iw_mlme

Source§

impl Eq for iw_param

Source§

impl Eq for iw_pmkid_cand

Source§

impl Eq for iw_pmksa

Source§

impl Eq for iw_point

Source§

impl Eq for iw_priv_args

Source§

impl Eq for iw_quality

Source§

impl Eq for iw_range

Source§

impl Eq for iw_scan_req

Source§

impl Eq for iw_statistics

Source§

impl Eq for iw_thrspy

Source§

impl Eq for j1939_filter

Source§

impl Eq for lconv

Source§

impl Eq for linger

Source§

impl Eq for mallinfo2

Source§

impl Eq for mallinfo

Source§

impl Eq for mbstate_t

Source§

impl Eq for mcontext_t

Source§

impl Eq for mmsghdr

Source§

impl Eq for mnt_ns_info

Source§

impl Eq for mntent

Source§

impl Eq for mount_attr

Source§

impl Eq for mq_attr

Source§

impl Eq for msghdr

Source§

impl Eq for msginfo

Source§

impl Eq for msqid_ds

Source§

impl Eq for netent

Source§

impl Eq for nl_mmap_hdr

Source§

impl Eq for nl_mmap_req

Source§

impl Eq for nl_pktinfo

Source§

impl Eq for nlattr

Source§

impl Eq for nlmsgerr

Source§

impl Eq for nlmsghdr

Source§

impl Eq for ntptimeval

Source§

impl Eq for open_how

Source§

impl Eq for option

Source§

impl Eq for packet_mreq

Source§

impl Eq for passwd

Source§

impl Eq for pidfd_info

Source§

impl Eq for pollfd

Source§

impl Eq for posix_spawn_file_actions_t

Source§

impl Eq for posix_spawnattr_t

Source§

impl Eq for protoent

Source§

impl Eq for pthread_attr_t

Source§

impl Eq for pthread_barrier_t

Source§

impl Eq for pthread_barrierattr_t

Source§

impl Eq for pthread_cond_t

Source§

impl Eq for pthread_condattr_t

Source§

impl Eq for pthread_mutex_t

Source§

impl Eq for pthread_mutexattr_t

Source§

impl Eq for pthread_rwlock_t

Source§

impl Eq for pthread_rwlockattr_t

Source§

impl Eq for ptp_clock_caps

Source§

impl Eq for ptp_clock_time

Source§

impl Eq for ptp_extts_event

Source§

impl Eq for ptp_extts_request

Source§

impl Eq for ptp_pin_desc

Source§

impl Eq for ptp_sys_offset

Source§

impl Eq for ptp_sys_offset_extended

Source§

impl Eq for ptp_sys_offset_precise

Source§

impl Eq for ptrace_peeksiginfo_args

Source§

impl Eq for ptrace_rseq_configuration

Source§

impl Eq for ptrace_sud_config

Source§

impl Eq for ptrace_syscall_info

Source§

impl Eq for regex_t

Source§

impl Eq for regmatch_t

Source§

impl Eq for rlimit64

Source§

impl Eq for rlimit

Source§

impl Eq for rtattr

Source§

impl Eq for rtentry

Source§

impl Eq for rusage

Source§

impl Eq for sched_attr

Source§

impl Eq for sched_param

Source§

impl Eq for sctp_authinfo

Source§

impl Eq for sctp_initmsg

Source§

impl Eq for sctp_nxtinfo

Source§

impl Eq for sctp_prinfo

Source§

impl Eq for sctp_rcvinfo

Source§

impl Eq for sctp_sndinfo

Source§

impl Eq for sctp_sndrcvinfo

Source§

impl Eq for seccomp_data

Source§

impl Eq for seccomp_notif

Source§

impl Eq for seccomp_notif_addfd

Source§

impl Eq for seccomp_notif_resp

Source§

impl Eq for seccomp_notif_sizes

Source§

impl Eq for sem_t

Source§

impl Eq for sembuf

Source§

impl Eq for semid_ds

Source§

impl Eq for seminfo

Source§

impl Eq for servent

Source§

impl Eq for shmid_ds

Source§

impl Eq for sigaction

Source§

impl Eq for sigevent

Available on crate feature extra_traits and non-L4Re only.
Source§

impl Eq for siginfo_t

Available on crate features extra_traits only.
Source§

impl Eq for signalfd_siginfo

Source§

impl Eq for sigset_t

Source§

impl Eq for sigval

Source§

impl Eq for sock_extended_err

Source§

impl Eq for sock_filter

Source§

impl Eq for sock_fprog

Source§

impl Eq for sockaddr

Source§

impl Eq for sockaddr_alg

Source§

impl Eq for sockaddr_in6

Source§

impl Eq for sockaddr_in

Source§

impl Eq for sockaddr_iucv

Source§

impl Eq for sockaddr_ll

Source§

impl Eq for sockaddr_nl

Source§

impl Eq for sockaddr_pkt

Source§

impl Eq for sockaddr_storage

Source§

impl Eq for sockaddr_un

Source§

impl Eq for sockaddr_vm

Source§

impl Eq for sockaddr_xdp

Source§

impl Eq for spwd

Source§

impl Eq for stack_t

Source§

impl Eq for stat64

Source§

impl Eq for stat

Source§

impl Eq for statfs64

Source§

impl Eq for statfs

Source§

impl Eq for statvfs64

Source§

impl Eq for statvfs

Source§

impl Eq for statx

Source§

impl Eq for statx_timestamp

Source§

impl Eq for sysinfo

Source§

impl Eq for tcp_info

Source§

impl Eq for termios2

Source§

impl Eq for termios

Source§

impl Eq for timespec

Source§

impl Eq for timeval

Source§

impl Eq for timex

Source§

impl Eq for tls12_crypto_info_aes_ccm_128

Source§

impl Eq for tls12_crypto_info_aes_gcm_128

Source§

impl Eq for tls12_crypto_info_aes_gcm_256

Source§

impl Eq for tls12_crypto_info_aria_gcm_128

Source§

impl Eq for tls12_crypto_info_aria_gcm_256

Source§

impl Eq for tls12_crypto_info_chacha20_poly1305

Source§

impl Eq for tls12_crypto_info_sm4_ccm

Source§

impl Eq for tls12_crypto_info_sm4_gcm

Source§

impl Eq for tls_crypto_info

Source§

impl Eq for tm

Source§

impl Eq for tms

Source§

impl Eq for tpacket2_hdr

Source§

impl Eq for tpacket3_hdr

Source§

impl Eq for tpacket_auxdata

Source§

impl Eq for tpacket_bd_ts

Source§

impl Eq for tpacket_hdr

Source§

impl Eq for tpacket_hdr_v1

Source§

impl Eq for tpacket_hdr_variant1

Source§

impl Eq for tpacket_req3

Source§

impl Eq for tpacket_req

Source§

impl Eq for tpacket_rollover_stats

Source§

impl Eq for tpacket_stats

Source§

impl Eq for tpacket_stats_v3

Source§

impl Eq for ucontext_t

Source§

impl Eq for ucred

Source§

impl Eq for uinput_abs_setup

Source§

impl Eq for uinput_ff_erase

Source§

impl Eq for uinput_ff_upload

Source§

impl Eq for uinput_setup

Source§

impl Eq for uinput_user_dev

Source§

impl Eq for user

Source§

impl Eq for user_fpregs_struct

Source§

impl Eq for user_regs_struct

Source§

impl Eq for utimbuf

Source§

impl Eq for utmpx

Source§

impl Eq for utsname

Source§

impl Eq for winsize

Source§

impl Eq for xdp_desc

Source§

impl Eq for xdp_mmap_offsets

Source§

impl Eq for xdp_mmap_offsets_v1

Source§

impl Eq for xdp_options

Source§

impl Eq for xdp_ring_offset

Source§

impl Eq for xdp_ring_offset_v1

Source§

impl Eq for xdp_statistics

Source§

impl Eq for xdp_statistics_v1

Source§

impl Eq for xdp_umem_reg

Source§

impl Eq for xdp_umem_reg_v1

Source§

impl Eq for xsk_tx_metadata_completion

Source§

impl Eq for xsk_tx_metadata_request

1.0.0 · Source§

impl Eq for Error

Source§

impl Eq for FormattingOptions

1.28.0 · Source§

impl Eq for Layout

1.50.0 · Source§

impl Eq for LayoutError

Source§

impl Eq for AllocError

1.0.0 (const: unstable) · Source§

impl Eq for TypeId

Source§

impl Eq for ByteStr

1.34.0 · Source§

impl Eq for CharTryFromError

1.20.0 · Source§

impl Eq for ParseCharError

1.9.0 · Source§

impl Eq for DecodeUtf16Error

1.59.0 · Source§

impl Eq for TryFromCharError

1.27.0 · Source§

impl Eq for CpuidResult

1.64.0 · Source§

impl Eq for CStr

1.69.0 · Source§

impl Eq for FromBytesUntilNulError

1.33.0 · Source§

impl Eq for PhantomPinned

1.0.0 (const: unstable) · Source§

impl Eq for Ipv4Addr

1.0.0 (const: unstable) · Source§

impl Eq for Ipv6Addr

1.0.0 · Source§

impl Eq for AddrParseError

1.0.0 · Source§

impl Eq for SocketAddrV4

1.0.0 · Source§

impl Eq for SocketAddrV6

1.0.0 · Source§

impl Eq for ParseIntError

1.34.0 · Source§

impl Eq for TryFromIntError

1.0.0 · Source§

impl Eq for ParseFloatError

1.0.0 (const: unstable) · Source§

impl Eq for RangeFull

1.0.0 · Source§

impl Eq for ParseBoolError

1.0.0 · Source§

impl Eq for Utf8Error

1.3.0 · Source§

impl Eq for Duration

1.66.0 · Source§

impl Eq for TryFromFloatSecsError

Source§

impl Eq for libc::prelude::mem::Alignment

Source§

impl Eq for Assume

1.10.0 · Source§

impl Eq for Location<'_>

Source§

impl Eq for __c_anonymous_ptrace_syscall_info_data

Available on crate features extra_traits only.
Source§

impl<'a> Eq for Utf8Pattern<'a>

Source§

impl<'a> Eq for PhantomContravariantLifetime<'a>

Source§

impl<'a> Eq for PhantomCovariantLifetime<'a>

Source§

impl<'a> Eq for PhantomInvariantLifetime<'a>

1.79.0 · Source§

impl<'a> Eq for Utf8Chunk<'a>

1.0.0 (const: unstable) · Source§

impl<A> Eq for &A
where A: Eq + ?Sized,

1.0.0 (const: unstable) · Source§

impl<A> Eq for &mut A
where A: Eq + ?Sized,

1.55.0 (const: unstable) · Source§

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

Source§

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

1.4.0 · Source§

impl<F> Eq for F
where F: FnPtr,

1.29.0 · Source§

impl<H> Eq for BuildHasherDefault<H>

1.0.0 · Source§

impl<Idx> Eq for core::ops::range::Range<Idx>
where Idx: Eq,

1.0.0 · Source§

impl<Idx> Eq for core::ops::range::RangeFrom<Idx>
where Idx: Eq,

1.26.0 (const: unstable) · Source§

impl<Idx> Eq for core::ops::range::RangeInclusive<Idx>
where Idx: Eq,

1.0.0 · Source§

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

1.26.0 · Source§

impl<Idx> Eq for core::ops::range::RangeToInclusive<Idx>
where Idx: Eq,

1.96.0 (const: unstable) · Source§

impl<Idx> Eq for core::range::Range<Idx>
where Idx: Eq,

1.96.0 (const: unstable) · Source§

impl<Idx> Eq for core::range::RangeFrom<Idx>
where Idx: Eq,

1.95.0 · Source§

impl<Idx> Eq for core::range::RangeInclusive<Idx>
where Idx: Eq,

1.96.0 · Source§

impl<Idx> Eq for core::range::RangeToInclusive<Idx>
where Idx: Eq,

1.41.0 · Source§

impl<Ptr> Eq for Pin<Ptr>
where Ptr: Deref, <Ptr as Deref>::Target: Eq,

1.0.0 (const: unstable) · Source§

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

1.17.0 (const: unstable) · Source§

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

1.36.0 · Source§

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

1.0.0 · Source§

impl<T> Eq for *const T
where T: ?Sized,

Pointer equality is an equivalence relation.

1.0.0 · Source§

impl<T> Eq for *mut T
where T: ?Sized,

Pointer equality is an equivalence relation.

1.0.0 (const: unstable) · Source§

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

1.0.0 (const: unstable) · Source§

impl<T> Eq for (T₁, T₂, …, Tₙ)
where T: Eq,

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

1.70.0 · Source§

impl<T> Eq for OnceCell<T>
where T: Eq,

1.2.0 · Source§

impl<T> Eq for Cell<T>
where T: Eq + Copy,

1.2.0 · Source§

impl<T> Eq for RefCell<T>
where T: Eq + ?Sized,

1.19.0 (const: unstable) · Source§

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

1.0.0 · Source§

impl<T> Eq for Cursor<T>
where T: Eq,

1.0.0 · Source§

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

Source§

impl<T> Eq for PhantomContravariant<T>
where T: ?Sized,

Source§

impl<T> Eq for PhantomCovariant<T>
where T: ?Sized,

Source§

impl<T> Eq for PhantomInvariant<T>
where T: ?Sized,

1.28.0 (const: unstable) · Source§

impl<T> Eq for NonZero<T>
where T: ZeroablePrimitive + Eq,

1.74.0 · Source§

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

1.0.0 · Source§

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

Source§

impl<T> Eq for SyncView<T>
where T: Sync + Eq + ?Sized,

1.21.0 · Source§

impl<T> Eq for Discriminant<T>

1.20.0 · Source§

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

Source§

impl<T> Eq for TraitImpl<T>
where T: Eq + ?Sized,

1.25.0 · Source§

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

1.0.0 (const: unstable) · Source§

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

1.0.0 (const: unstable) · Source§

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

Source§

impl<T, const N: usize> Eq for Simd<T, N>
where T: SimdElement + Eq,

Source§

impl<T, const VARIANT: u32, const FIELD: u32> Eq for FieldRepresentingType<T, VARIANT, FIELD>
where T: ?Sized,

Source§

impl<T: Copy> Eq for Padding<T>

Available on crate feature extra_traits only.

Mark that Padding implements Eq so that it can be used in types that implement it.

Source§

impl<Y, R> Eq for CoroutineState<Y, R>
where Y: Eq, R: Eq,