Eq

Trait Eq 

1.55.0 (const: unstable) · Source
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 implies b == a and a != b implies !(a == b)
  • transitive: a == b and b == c implies a == 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 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 TryReserveErrorKind

Source§

impl Eq for AsciiChar

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

1.28.0 · Source§

impl Eq for core::fmt::Alignment

Source§

impl Eq for DebugAsHex

Source§

impl Eq for Sign

Source§

impl Eq for AtomicOrdering

Source§

impl Eq for SimdAlign

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.65.0 · Source§

impl Eq for BacktraceStatus

1.0.0 · Source§

impl Eq for VarError

1.0.0 · Source§

impl Eq for SeekFrom

1.0.0 · Source§

impl Eq for ErrorKind

1.0.0 · Source§

impl Eq for Shutdown

Source§

impl Eq for BacktraceStyle

1.12.0 · Source§

impl Eq for RecvTimeoutError

1.0.0 · Source§

impl Eq for TryRecvError

Source§

impl Eq for json::error::Error

Source§

impl Eq for JsonValue

Source§

impl Eq for num_bigfloat::defs::Error

Source§

impl Eq for RoundingMode

Source§

impl Eq for BernoulliError

Source§

impl Eq for WeightedError

Source§

impl Eq for BigEndian

Source§

impl Eq for LittleEndian

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 BigFloat

Source§

impl Eq for ByteString

Source§

impl Eq for UnorderedKeyError

1.57.0 · Source§

impl Eq for TryReserveError

1.64.0 · Source§

impl Eq for CString

1.64.0 · Source§

impl Eq for FromVecWithNulError

1.64.0 · Source§

impl Eq for IntoStringError

1.64.0 · Source§

impl Eq for NulError

1.0.0 · Source§

impl Eq for FromUtf8Error

1.0.0 · Source§

impl Eq for String

1.28.0 · Source§

impl Eq for Layout

1.50.0 · Source§

impl Eq for LayoutError

Source§

impl Eq for core::alloc::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.64.0 · Source§

impl Eq for CStr

1.69.0 · Source§

impl Eq for FromBytesUntilNulError

1.0.0 · Source§

impl Eq for core::fmt::Error

Source§

impl Eq for FormattingOptions

1.33.0 · Source§

impl Eq for PhantomPinned

Source§

impl Eq for Assume

1.0.0 · Source§

impl Eq for Ipv4Addr

1.0.0 · 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 ParseFloatError

1.0.0 · Source§

impl Eq for ParseIntError

1.34.0 · Source§

impl Eq for TryFromIntError

1.0.0 (const: unstable) · Source§

impl Eq for RangeFull

1.10.0 · Source§

impl Eq for Location<'_>

Source§

impl Eq for core::ptr::alignment::Alignment

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

1.0.0 · Source§

impl Eq for OsStr

1.0.0 · Source§

impl Eq for OsString

1.1.0 · Source§

impl Eq for FileType

1.0.0 · Source§

impl Eq for Permissions

Source§

impl Eq for UCred

1.0.0 · Source§

impl Eq for Components<'_>

1.0.0 · Source§

impl Eq for Path

1.0.0 · Source§

impl Eq for PathBuf

1.7.0 · Source§

impl Eq for StripPrefixError

1.0.0 · Source§

impl Eq for ExitStatus

Source§

impl Eq for ExitStatusError

1.0.0 · Source§

impl Eq for Output

1.0.0 · Source§

impl Eq for RecvError

1.5.0 · Source§

impl Eq for WaitTimeoutResult

1.26.0 · Source§

impl Eq for AccessError

1.19.0 · Source§

impl Eq for ThreadId

1.8.0 · Source§

impl Eq for Instant

1.8.0 · Source§

impl Eq for SystemTime

Source§

impl Eq for futures_channel::mpsc::SendError

Source§

impl Eq for Canceled

Source§

impl Eq for getrandom::error::Error

Source§

impl Eq for __darwin_arm_exception_state64

Source§

impl Eq for __darwin_arm_neon_state64

Source§

impl Eq for __darwin_arm_thread_state64

Source§

impl Eq for __darwin_mcontext64

Source§

impl Eq for malloc_zone_t

Source§

impl Eq for ucontext_t

Source§

impl Eq for bpf_hdr

Source§

impl Eq for if_data

Source§

impl Eq for pthread_attr_t

Source§

impl Eq for pthread_once_t

Source§

impl Eq for timeval32

Source§

impl Eq for Dl_info

Source§

impl Eq for addrinfo

Source§

impl Eq for aiocb

Source§

impl Eq for arphdr

Source§

impl Eq for attribute_set_t

Source§

impl Eq for attrlist

Source§

impl Eq for attrreference_t

Source§

impl Eq for ctl_info

Source§

impl Eq for dirent

Source§

impl Eq for dqblk

Source§

impl Eq for flock

Source§

impl Eq for fpunchhole_t

Source§

impl Eq for fspecread_t

Source§

impl Eq for fstore_t

Source§

impl Eq for ftrimactivefile_t

Source§

impl Eq for glob_t

Source§

impl Eq for host_cpu_load_info

Source§

impl Eq for icmp6_ifstat

Source§

impl Eq for if_data64

Source§

impl Eq for if_msghdr2

Source§

impl Eq for if_msghdr

Source§

impl Eq for ifa_msghdr

Source§

impl Eq for ifconf

Source§

impl Eq for ifdevmtu

Source§

impl Eq for ifkpi

Source§

impl Eq for ifma_msghdr2

Source§

impl Eq for ifma_msghdr

Source§

impl Eq for ifmibdata

Source§

impl Eq for ifreq

Source§

impl Eq for ifs_iso_8802_3

Source§

impl Eq for image_offset

Source§

impl Eq for in6_addrlifetime

Source§

impl Eq for in6_ifreq

Source§

impl Eq for in6_ifstat

Source§

impl Eq for in6_pktinfo

Source§

impl Eq for in_addr

Source§

impl Eq for in_pktinfo

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 kevent64_s

Source§

impl Eq for kevent

Source§

impl Eq for lconv

Source§

impl Eq for load_command

Source§

impl Eq for log2phys

Source§

impl Eq for mach_header

Source§

impl Eq for mach_header_64

Source§

impl Eq for mach_task_basic_info

Source§

impl Eq for mach_timebase_info

Source§

impl Eq for malloc_statistics_t

Source§

impl Eq for mstats

Source§

impl Eq for ntptimeval

Source§

impl Eq for os_unfair_lock_s

Source§

impl Eq for proc_bsdinfo

Source§

impl Eq for proc_fdinfo

Source§

impl Eq for proc_taskallinfo

Source§

impl Eq for proc_taskinfo

Source§

impl Eq for proc_threadinfo

Source§

impl Eq for proc_vnodepathinfo

Source§

impl Eq for processor_basic_info

Source§

impl Eq for processor_cpu_load_info

Source§

impl Eq for processor_set_basic_info

Source§

impl Eq for processor_set_load_info

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 radvisory

Source§

impl Eq for rt_metrics

Source§

impl Eq for rt_msghdr2

Source§

impl Eq for rt_msghdr

Source§

impl Eq for rusage_info_v0

Source§

impl Eq for rusage_info_v1

Source§

impl Eq for rusage_info_v2

Source§

impl Eq for rusage_info_v3

Source§

impl Eq for rusage_info_v4

Source§

impl Eq for sa_endpoints_t

Source§

impl Eq for sched_param

Source§

impl Eq for segment_command

Source§

impl Eq for segment_command_64

Source§

impl Eq for sembuf

Source§

impl Eq for semid_ds

Source§

impl Eq for sf_hdtr

Source§

impl Eq for shmid_ds

Source§

impl Eq for sigaction

Source§

impl Eq for sigevent

Source§

impl Eq for siginfo_t

Source§

impl Eq for sockaddr_ctl

Source§

impl Eq for sockaddr_dl

Source§

impl Eq for sockaddr_in

Source§

impl Eq for sockaddr_inarp

Source§

impl Eq for sockaddr_ndrv

Source§

impl Eq for sockaddr_storage

Source§

impl Eq for sockaddr_vm

Source§

impl Eq for stack_t

Source§

impl Eq for stat

Source§

impl Eq for statfs

Source§

impl Eq for statvfs

Source§

impl Eq for task_thread_times_info

Source§

impl Eq for tcp_connection_info

Source§

impl Eq for termios

Source§

impl Eq for thread_affinity_policy

Source§

impl Eq for thread_background_policy

Source§

impl Eq for thread_basic_info

Source§

impl Eq for thread_extended_info

Source§

impl Eq for thread_extended_policy

Source§

impl Eq for thread_identifier_info

Source§

impl Eq for thread_latency_qos_policy

Source§

impl Eq for thread_precedence_policy

Source§

impl Eq for thread_standard_policy

Source§

impl Eq for thread_throughput_qos_policy

Source§

impl Eq for thread_time_constraint_policy

Source§

impl Eq for time_value_t

Source§

impl Eq for timex

Source§

impl Eq for utmpx

Source§

impl Eq for vinfo_stat

Source§

impl Eq for vm_range_t

Source§

impl Eq for vm_statistics64

Source§

impl Eq for vm_statistics

Source§

impl Eq for vnode_info

Source§

impl Eq for vnode_info_path

Source§

impl Eq for vol_attributes_attr_t

Source§

impl Eq for vol_capabilities_attr_t

Source§

impl Eq for xsw_usage

Source§

impl Eq for xucred

Source§

impl Eq for cmsghdr

Source§

impl Eq for fd_set

Source§

impl Eq for fsid_t

Source§

impl Eq for if_nameindex

Source§

impl Eq for ifaddrs

Source§

impl Eq for msghdr

Source§

impl Eq for option

Source§

impl Eq for passwd

Source§

impl Eq for regex_t

Source§

impl Eq for regmatch_t

Source§

impl Eq for sockaddr

Source§

impl Eq for sockaddr_in6

Source§

impl Eq for sockaddr_un

Source§

impl Eq for tm

Source§

impl Eq for utsname

Source§

impl Eq for group

Source§

impl Eq for hostent

Source§

impl Eq for in6_addr

Source§

impl Eq for iovec

Source§

impl Eq for ipv6_mreq

Source§

impl Eq for itimerval

Source§

impl Eq for linger

Source§

impl Eq for pollfd

Source§

impl Eq for protoent

Source§

impl Eq for rlimit

Source§

impl Eq for rusage

Source§

impl Eq for servent

Source§

impl Eq for sigval

Source§

impl Eq for timespec

Source§

impl Eq for timeval

Source§

impl Eq for tms

Source§

impl Eq for utimbuf

Source§

impl Eq for winsize

Source§

impl Eq for vec256_storage

Source§

impl Eq for vec512_storage

Source§

impl Eq for StepRng

Source§

impl Eq for StdRng

Source§

impl Eq for ChaCha8Core

Source§

impl Eq for ChaCha8Rng

Source§

impl Eq for ChaCha12Core

Source§

impl Eq for ChaCha12Rng

Source§

impl Eq for ChaCha20Core

Source§

impl Eq for ChaCha20Rng

Source§

impl Eq for zerocopy::error::AllocError

Source§

impl Eq for __c_anonymous_ifc_ifcu

Source§

impl Eq for __c_anonymous_ifk_data

Source§

impl Eq for __c_anonymous_ifr_ifru6

Source§

impl Eq for __c_anonymous_ifr_ifru

Source§

impl Eq for semun

Source§

impl Eq for vec128_storage

Source§

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

1.0.0 · Source§

impl<'a> Eq for Component<'a>

1.0.0 · Source§

impl<'a> Eq for Prefix<'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 · Source§

impl<'a> Eq for PrefixComponent<'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,

Source§

impl<A, S, V> Eq for ConvertError<A, S, V>
where A: Eq, S: Eq, V: Eq,

1.0.0 · Source§

impl<B> Eq for Cow<'_, B>
where B: Eq + ToOwned + ?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,

Source§

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

Source§

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

Source§

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

Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

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

Source§

impl<O> Eq for F32<O>
where O: Eq,

Source§

impl<O> Eq for F64<O>
where O: Eq,

Source§

impl<O> Eq for I16<O>
where O: Eq,

Source§

impl<O> Eq for I32<O>
where O: Eq,

Source§

impl<O> Eq for I64<O>
where O: Eq,

Source§

impl<O> Eq for I128<O>
where O: Eq,

Source§

impl<O> Eq for Isize<O>
where O: Eq,

Source§

impl<O> Eq for U16<O>
where O: Eq,

Source§

impl<O> Eq for U32<O>
where O: Eq,

Source§

impl<O> Eq for U64<O>
where O: Eq,

Source§

impl<O> Eq for U128<O>
where O: Eq,

Source§

impl<O> Eq for Usize<O>
where O: Eq,

1.41.0 · Source§

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

Source§

impl<Src, Dst> Eq for AlignmentError<Src, Dst>
where Src: Eq, Dst: Eq + ?Sized,

Source§

impl<Src, Dst> Eq for SizeError<Src, Dst>
where Src: Eq, Dst: Eq + ?Sized,

Source§

impl<Src, Dst> Eq for ValidityError<Src, Dst>
where Src: Eq, Dst: Eq + TryFromBytes + ?Sized,

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,

Source§

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

1.0.0 · Source§

impl<T> Eq for std::sync::mpsc::TrySendError<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 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.20.0 · Source§

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

1.21.0 · Source§

impl<T> Eq for Discriminant<T>

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,

1.25.0 · Source§

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

Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

impl<T> Eq for std::sync::mpsc::SendError<T>
where T: Eq,

1.70.0 · Source§

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

Source§

impl<T> Eq for futures_channel::mpsc::TrySendError<T>
where T: Eq,

Source§

impl<T> Eq for Unalign<T>
where T: Unaligned + Eq,

1.0.0 · Source§

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

1.0.0 · Source§

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

1.0.0 · Source§

impl<T, A> Eq for LinkedList<T, A>
where T: Eq, A: Allocator,

1.0.0 · Source§

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

1.0.0 · Source§

impl<T, A> Eq for Rc<T, A>
where T: Eq + ?Sized, A: Allocator,

Source§

impl<T, A> Eq for UniqueRc<T, A>
where T: Eq + ?Sized, A: Allocator,

1.0.0 · Source§

impl<T, A> Eq for Arc<T, A>
where T: Eq + ?Sized, A: Allocator,

Source§

impl<T, A> Eq for UniqueArc<T, A>
where T: Eq + ?Sized, A: Allocator,

1.0.0 · Source§

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

Source§

impl<T, B> Eq for Ref<B, T>

1.0.0 (const: unstable) · Source§

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

1.0.0 · Source§

impl<T, S> Eq for HashSet<T, S>
where T: Eq + Hash, S: BuildHasher,

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>

Source§

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