pub trait Eq: PartialEq { }
Expand description
Trait for comparisons corresponding to equivalence relations.
This means, that in addition to a == b
and a != b
being strict inverses,
the relation must be (for all a
, b
and c
):
- reflexive:
a == a
; - symmetric:
a == b
impliesb == a
(required byPartialEq
as well); and - transitive:
a == b
andb == c
impliesa == c
(required byPartialEq
as well).
This property cannot be checked by the compiler, and therefore Eq
implies
PartialEq
, and has no extra 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.
Implement Eq
in addition to PartialEq
if it’s guaranteed that
PartialEq::eq(a, a)
always returns true
(reflexivity), in addition to
the symmetric and transitive properties already required by PartialEq
.
§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 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 {}
Object Safety§
Implementors§
impl Eq for gstd::errors::Error
impl Eq for ErrorReplyReason
impl Eq for ExecutionError
impl Eq for ExtError
impl Eq for MemoryError
impl Eq for MessageError
impl Eq for ReplyCode
impl Eq for ReservationError
impl Eq for SignalCode
impl Eq for SimpleExecutionError
impl Eq for SimpleProgramCreationError
impl Eq for SuccessReplyReason
impl Eq for UsageError
impl Eq for AsciiChar
impl Eq for gstd::prelude::cmp::Ordering
impl Eq for TryReserveErrorKind
impl Eq for gstd::prelude::collections::hashbrown::TryReserveError
impl Eq for Infallible
impl Eq for gstd::prelude::fmt::Alignment
impl Eq for IpAddr
impl Eq for Ipv6MulticastScope
impl Eq for SocketAddr
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 BernoulliError
impl Eq for WeightedError
impl Eq for FpCategory
impl Eq for IntErrorKind
impl Eq for SearchStep
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 ErrorReplyPayload
impl Eq for SyscallError
impl Eq for gstd::msg::MessageHandle
impl Eq for gstd::ActorId
impl Eq for gstd::CodeId
impl Eq for gstd::MessageId
impl Eq for Percent
impl Eq for gstd::ReservationId
impl Eq for MetaType
impl Eq for TypeId
impl Eq for CharTryFromError
impl Eq for DecodeUtf16Error
impl Eq for ParseCharError
impl Eq for TryFromCharError
impl Eq for gstd::prelude::collections::TryReserveError
impl Eq for CStr
impl Eq for CString
impl Eq for FromBytesUntilNulError
impl Eq for FromBytesWithNulError
impl Eq for FromVecWithNulError
impl Eq for IntoStringError
impl Eq for NulError
impl Eq for gstd::prelude::fmt::Error
impl Eq for Layout
impl Eq for LayoutError
impl Eq for core::alloc::AllocError
impl Eq for CpuidResult
impl Eq for Ipv4Addr
impl Eq for Ipv6Addr
impl Eq for AddrParseError
impl Eq for SocketAddrV4
impl Eq for SocketAddrV6
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 std::path::Path
impl Eq for PathBuf
impl Eq for StripPrefixError
impl Eq for ExitStatus
impl Eq for ExitStatusError
impl Eq for Output
impl Eq for WaitTimeoutResult
impl Eq for RecvError
impl Eq for AccessError
impl Eq for ThreadId
impl Eq for Instant
impl Eq for SystemTime
impl Eq for getrandom::error::Error
impl Eq for StepRng
impl Eq for SmallRng
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 PhantomPinned
impl Eq for Assume
impl Eq for NonZeroI8
impl Eq for NonZeroI16
impl Eq for NonZeroI32
impl Eq for NonZeroI64
impl Eq for NonZeroI128
impl Eq for NonZeroIsize
impl Eq for NonZeroU8
impl Eq for NonZeroU16
impl Eq for NonZeroU32
impl Eq for NonZeroU64
impl Eq for NonZeroU128
impl Eq for NonZeroUsize
impl Eq for ParseFloatError
impl Eq for ParseIntError
impl Eq for TryFromIntError
impl Eq for RangeFull
impl Eq for gstd::prelude::ptr::Alignment
impl Eq for ParseBoolError
impl Eq for Utf8Error
impl Eq for FromUtf8Error
impl Eq for String
impl Eq for Duration
impl Eq for TryFromFloatSecsError
impl Eq for Aborted
impl Eq for ActorId
impl Eq for AllocError
impl Eq for BigEndian
impl Eq for Bytes
impl Eq for BytesMut
impl Eq for Canceled
impl Eq for CodeId
impl Eq for Const
impl Eq for Dl_info
impl Eq for Elf32_Chdr
impl Eq for Elf32_Ehdr
impl Eq for Elf32_Phdr
impl Eq for Elf32_Shdr
impl Eq for Elf32_Sym
impl Eq for Elf64_Chdr
impl Eq for Elf64_Ehdr
impl Eq for Elf64_Phdr
impl Eq for Elf64_Shdr
impl Eq for Elf64_Sym
impl Eq for Error
impl Eq for Error
impl Eq for Error
impl Eq for Error
impl Eq for Error
impl Eq for Error
impl Eq for Error
impl Eq for FromStrRadixErrKind
impl Eq for H128
impl Eq for H160
impl Eq for H256
impl Eq for H384
impl Eq for H512
impl Eq for H768
impl Eq for LittleEndian
impl Eq for Lsb0
impl Eq for MessageHandle
impl Eq for MessageId
impl Eq for MetaForm
impl Eq for Msb0
impl Eq for Mut
impl Eq for NullPtrError
impl Eq for OptionBool
impl Eq for PathError
impl Eq for PollNext
impl Eq for PortableForm
impl Eq for PortableRegistry
impl Eq for PortableType
impl Eq for Registry
impl Eq for ReservationId
impl Eq for SendError
impl Eq for TypeDefPrimitive
impl Eq for U128
impl Eq for U256
impl Eq for U512
impl Eq for __c_anonymous_ifru_map
impl Eq for __c_anonymous_ptrace_syscall_info_data
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 __c_anonymous_sockaddr_can_j1939
impl Eq for __c_anonymous_sockaddr_can_tp
impl Eq for __exit_status
impl Eq for __timeval
impl Eq for _libc_fpstate
impl Eq for _libc_fpxreg
impl Eq for _libc_xmmreg
impl Eq for addrinfo
impl Eq for af_alg_iv
impl Eq for aiocb
impl Eq for arpd_request
impl Eq for arphdr
impl Eq for arpreq
impl Eq for arpreq_old
impl Eq for can_filter
impl Eq for clone_args
impl Eq for cmsghdr
impl Eq for cpu_set_t
impl Eq for dirent
impl Eq for dirent64
impl Eq for dl_phdr_info
impl Eq for dqblk
impl Eq for epoll_event
impl Eq for fanotify_event_metadata
impl Eq for fanotify_response
impl Eq for fd_set
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 flock
impl Eq for flock64
impl Eq for fsid_t
impl Eq for genlmsghdr
impl Eq for glob64_t
impl Eq for glob_t
impl Eq for group
impl Eq for hostent
impl Eq for hwtstamp_config
impl Eq for if_nameindex
impl Eq for ifaddrs
impl Eq for in6_addr
impl Eq for in6_ifreq
impl Eq for in6_pktinfo
impl Eq for in6_rtmsg
impl Eq for in_addr
impl Eq for in_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 iocb
impl Eq for iovec
impl Eq for ip_mreq
impl Eq for ip_mreq_source
impl Eq for ip_mreqn
impl Eq for ipc_perm
impl Eq for ipv6_mreq
impl Eq for itimerspec
impl Eq for itimerval
impl Eq for j1939_filter
impl Eq for lconv
impl Eq for linger
impl Eq for mallinfo
impl Eq for mallinfo2
impl Eq for mcontext_t
impl Eq for mmsghdr
impl Eq for mntent
impl Eq for mq_attr
impl Eq for msghdr
impl Eq for msginfo
impl Eq for msqid_ds
impl Eq for nl_mmap_hdr
impl Eq for nl_mmap_req
impl Eq for nl_pktinfo
impl Eq for nlattr
impl Eq for nlmsgerr
impl Eq for nlmsghdr
impl Eq for ntptimeval
impl Eq for open_how
impl Eq for option
impl Eq for packet_mreq
impl Eq for passwd
impl Eq for pollfd
impl Eq for posix_spawn_file_actions_t
impl Eq for posix_spawnattr_t
impl Eq for protoent
impl Eq for pthread_attr_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 ptrace_peeksiginfo_args
impl Eq for ptrace_rseq_configuration
impl Eq for ptrace_syscall_info
impl Eq for regex_t
impl Eq for regmatch_t
impl Eq for rlimit
impl Eq for rlimit64
impl Eq for rtentry
impl Eq for rusage
impl Eq for sched_attr
impl Eq for sched_param
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 sem_t
impl Eq for sembuf
impl Eq for semid_ds
impl Eq for seminfo
impl Eq for servent
impl Eq for shmid_ds
impl Eq for sigaction
impl Eq for sigevent
impl Eq for siginfo_t
impl Eq for signalfd_siginfo
impl Eq for sigset_t
impl Eq for sigval
impl Eq for sock_extended_err
impl Eq for sock_filter
impl Eq for sock_fprog
impl Eq for sockaddr
impl Eq for sockaddr_alg
impl Eq for sockaddr_in
impl Eq for sockaddr_in6
impl Eq for sockaddr_ll
impl Eq for sockaddr_nl
impl Eq for sockaddr_storage
impl Eq for sockaddr_un
impl Eq for sockaddr_vm
impl Eq for sockaddr_xdp
impl Eq for spwd
impl Eq for stack_t
impl Eq for stat
impl Eq for stat64
impl Eq for statfs
impl Eq for statfs64
impl Eq for statvfs
impl Eq for statvfs64
impl Eq for statx
impl Eq for statx_timestamp
impl Eq for sysinfo
impl Eq for termios
impl Eq for termios2
impl Eq for timespec
impl Eq for timeval
impl Eq for timex
impl Eq for tls12_crypto_info_aes_gcm_128
impl Eq for tls12_crypto_info_aes_gcm_256
impl Eq for tls12_crypto_info_chacha20_poly1305
impl Eq for tls_crypto_info
impl Eq for tm
impl Eq for tms
impl Eq for ucontext_t
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 user
impl Eq for user_fpregs_struct
impl Eq for user_regs_struct
impl Eq for utimbuf
impl Eq for utmpx
impl Eq for utsname
impl Eq for vec128_storage
impl Eq for vec256_storage
impl Eq for vec512_storage
impl Eq for winsize
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<'a> Eq for Component<'a>
impl<'a> Eq for Prefix<'a>
impl<'a> Eq for PrefixComponent<'a>
impl<'a> Eq for Location<'a>
impl<'a> Eq for Utf8Chunk<'a>
impl<'a, T> Eq for CompactRef<'a, T>where
T: Eq,
impl<'a, T> Eq for Symbol<'a, T>where
T: Eq + 'a,
impl<'a, T, O> Eq for IterOnes<'a, T, O>
impl<'a, T, O> Eq for IterZeros<'a, T, O>
impl<A> Eq for &A
impl<A> Eq for &mut A
impl<A, O> Eq for BitArray<A, O>where
A: BitViewSized,
O: BitOrder,
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 Range<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeFrom<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeInclusive<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeTo<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeToInclusive<Idx>where
Idx: Eq,
impl<Inner> Eq for Frozen<Inner>where
Inner: Eq + Mutability,
impl<K, V, A> Eq for BTreeMap<K, V, A>
impl<K, V, S> Eq for std::collections::hash::map::HashMap<K, V, S>
impl<K, V, S> Eq for AHashMap<K, V, S>
impl<K, V, S, A> Eq for gstd::prelude::collections::HashMap<K, V, S, A>
impl<M, T> Eq for Address<M, T>where
M: Mutability,
impl<M, T, O> Eq for BitPtr<M, T, O>where
M: Mutability,
T: BitStore,
O: BitOrder,
impl<M, T, O> Eq for BitPtrRange<M, T, O>where
M: Mutability,
T: BitStore,
O: BitOrder,
impl<M, T, O> Eq for BitRef<'_, M, T, O>where
M: Mutability,
T: BitStore,
O: BitOrder,
impl<Ptr> Eq for Pin<Ptr>
impl<R> Eq for BitEnd<R>where
R: Eq + BitRegister,
impl<R> Eq for BitIdx<R>where
R: Eq + BitRegister,
impl<R> Eq for BitIdxError<R>where
R: Eq + BitRegister,
impl<R> Eq for BitMask<R>where
R: Eq + BitRegister,
impl<R> Eq for BitPos<R>where
R: Eq + BitRegister,
impl<R> Eq for BitSel<R>where
R: Eq + BitRegister,
impl<T> Eq for Option<T>where
T: Eq,
impl<T> Eq for std::sync::mpsc::TrySendError<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 *const Twhere
T: ?Sized,
impl<T> Eq for *mut Twhere
T: ?Sized,
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.