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 == bimpliesb == a - transitive:
a == bandb == cimpliesa == c - consistent:
a != bif 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".
Implementors§
impl Eq for !
impl Eq for ()
impl Eq for Abi
impl Eq for AccessError
impl Eq for core::net::parser::AddrParseError
impl Eq for rustls_pki_types::server_name::AddrParseError
impl Eq for AlertDescription
impl Eq for ring::aead::algorithm::Algorithm
impl Eq for ring::aead::quic::Algorithm
impl Eq for ring::agreement::Algorithm
impl Eq for ring::digest::Algorithm
impl Eq for ring::hkdf::Algorithm
impl Eq for ring::hmac::Algorithm
impl Eq for ring::pbkdf2::Algorithm
impl Eq for AlgorithmIdentifier
impl Eq for http_request::mem::Alignment
impl Eq for http_request::self::Alignment
impl Eq for AllocError
impl Eq for AsciiChar
impl Eq for AsciiDenyList
impl Eq for AsciiProbeResult
impl Eq for AsciiSet
impl Eq for Assume
impl Eq for AtomicOrdering
impl Eq for http_type::attribute::enum::Attribute
impl Eq for icu_locale_core::extensions::unicode::attribute::Attribute
impl Eq for Attributes
impl Eq for BacktraceStatus
impl Eq for BacktraceStyle
impl Eq for BernoulliError
impl Eq for BidiClass
impl Eq for BidiMirroringGlyph
impl Eq for BidiPairedBracketType
impl Eq for Body
impl Eq for BrotliEncoderMode
impl Eq for BrotliEncoderOperation
impl Eq for BrotliEncoderParameter
impl Eq for BrotliEncoderStreamState
impl Eq for BufferFormat
impl Eq for ByteStr
impl Eq for ByteString
impl Eq for Bytes
impl Eq for BytesMut
impl Eq for CStr
impl Eq for CString
impl Eq for CalendarAlgorithm
impl Eq for CanonicalCombiningClass
impl Eq for Category
impl Eq for CertificateCompressionAlgorithm
impl Eq for CertificateType
impl Eq for ChaCha8Rng
impl Eq for ChaCha12Rng
impl Eq for ChaCha20Rng
impl Eq for CharCase
impl Eq for CharTryFromError
impl Eq for CharULE
impl Eq for CipherSuite
impl Eq for CodeBlockState
impl Eq for CodePointInversionListAndStringListULE
impl Eq for CodePointInversionListULE
impl Eq for CodePointTrieHeader
impl Eq for CollationCaseFirst
impl Eq for CollationNumericOrdering
impl Eq for CollationType
impl Eq for CommonVariantType
impl Eq for Components<'_>
impl Eq for Compress
impl Eq for Compression
impl Eq for miniz_oxide::deflate::CompressionLevel
impl Eq for rustls::compress::CompressionLevel
impl Eq for CompressionStrategy
impl Eq for http_request::ContentType
impl Eq for rustls::enums::ContentType
impl Eq for Cookie
impl Eq for CookieBuilder
impl Eq for CpuidResult
impl Eq for CurrencyFormatStyle
impl Eq for CurrencyType
impl Eq for DataError
impl Eq for DataErrorKind
impl Eq for DataFormat
impl Eq for DataLocale
impl Eq for DataMarkerAttributes
impl Eq for DataMarkerId
impl Eq for DataMarkerIdHash
impl Eq for DataMarkerInfo
impl Eq for DataRequestMetadata
impl Eq for DebugAsHex
impl Eq for DecodeUtf16Error
impl Eq for Decomposed
impl Eq for DerTypeId
impl Eq for DnsLength
impl Eq for Domain
impl Eq for Duration
impl Eq for EastAsianWidth
impl Eq for EcdsaSigningAlgorithm
impl Eq for EchStatus
impl Eq for Elapsed
impl Eq for EmitterConfig
impl Eq for EmojiPresentationStyle
impl Eq for Encoding
impl Eq for EncryptedClientHelloError
impl Eq for EndOfInput
impl Eq for Errno
impl Eq for http_request::self::Error
impl Eq for rand::distr::uniform::Error
impl Eq for rand::distr::weighted::Error
impl Eq for getrandom::error::Error
impl Eq for xml::reader::error::Error
impl Eq for serde_urlencoded::ser::Error
impl Eq for getrandom::error::Error
impl Eq for webpki::error::Error
impl Eq for http_request::self::ErrorKind
impl Eq for xml::reader::error::ErrorKind
impl Eq for ErrorPolicy
impl Eq for ExitStatus
impl Eq for ExitStatusError
impl Eq for ExpirationPolicy
impl Eq for ExtendedKeyPurpose
impl Eq for ExtensionType
impl Eq for Extensions
impl Eq for FieldId
impl Eq for Fields
impl Eq for FileExtension
impl Eq for FileType
impl Eq for FilterOp
impl Eq for FipsStatus
impl Eq for FirstDay
impl Eq for FlushCompress
impl Eq for FlushDecompress
impl Eq for FormattingOptions
impl Eq for FpCategory
impl Eq for FromBytesUntilNulError
impl Eq for FromBytesWithNulError
impl Eq for FromUtf8Error
impl Eq for FromVecWithNulError
impl Eq for GeneralCategory
impl Eq for GeneralCategoryGroup
impl Eq for GeneralCategoryOutOfBoundsError
impl Eq for GeneralCategoryULE
impl Eq for GetDisjointMutError
impl Eq for GraphemeClusterBreak
impl Eq for HandshakeType
impl Eq for HangulSyllableType
impl Eq for HashAlgorithm
impl Eq for HijriCalendarAlgorithm
impl Eq for HourCycle
impl Eq for HpkeSuite
impl Eq for HttpStatus
impl Eq for HttpUrlComponents
impl Eq for HttpUrlError
impl Eq for HttpVersion
impl Eq for Hyphens
impl Eq for tokio::runtime::task::id::Id
impl Eq for tokio::runtime::id::Id
impl Eq for InconsistentKeys
impl Eq for Index8
impl Eq for Index16
impl Eq for Index32
impl Eq for IndicConjunctBreak
impl Eq for IndicSyllabicCategory
impl Eq for std::time::Instant
impl Eq for tokio::time::instant::Instant
impl Eq for IntErrorKind
impl Eq for tokio::io::interest::Interest
impl Eq for mio::interest::Interest
impl Eq for InternalAttribute
impl Eq for IntoStringError
impl Eq for InvalidNameContext
impl Eq for IoState
impl Eq for core::net::ip_addr::IpAddr
impl Eq for rustls_pki_types::server_name::IpAddr
impl Eq for http_request::Ipv4Addr
impl Eq for rustls_pki_types::server_name::Ipv4Addr
impl Eq for http_request::Ipv6Addr
impl Eq for rustls_pki_types::server_name::Ipv6Addr
impl Eq for Ipv6MulticastScope
impl Eq for JoiningGroup
impl Eq for JoiningType
impl Eq for icu_locale_core::extensions::transform::key::Key
impl Eq for icu_locale_core::extensions::unicode::key::Key
impl Eq for KeyPurposeId<'_>
impl Eq for KeyUsage
impl Eq for Keywords
impl Eq for Language
impl Eq for LanguageIdentifier
impl Eq for Layout
impl Eq for LayoutError
impl Eq for LengthHint
impl Eq for Level
impl Eq for LevelFilter
impl Eq for LineBreak
impl Eq for LineBreakStyle
impl Eq for LineBreakWordHandling
impl Eq for LiteralPredictionModeNibble
impl Eq for Locale
impl Eq for LocalePreferences
impl Eq for Locality
impl Eq for Location<'_>
impl Eq for MZError
impl Eq for MZFlush
impl Eq for MZStatus
impl Eq for Map<String, Value>
impl Eq for MeasurementSystem
impl Eq for MeasurementUnitOverride
impl Eq for Method
impl Eq for MissedTickBehavior
impl Eq for NamedGroup
impl Eq for Namespace
impl Eq for NamespaceStack
impl Eq for NulError
impl Eq for Number
impl Eq for NumberingSystem
impl Eq for NumericType
impl Eq for OnceState
impl Eq for OpaqueOrigin
impl Eq for http_request::cmp::Ordering
impl Eq for core::sync::atomic::Ordering
impl Eq for Origin
impl Eq for OsStr
impl Eq for OsString
impl Eq for Other
impl Eq for Output
impl Eq for OwnedAttribute
impl Eq for OwnedName
impl Eq for PanicData
impl Eq for ParkResult
impl Eq for ParkToken
impl Eq for ParseBoolError
impl Eq for ParseCharError
impl Eq for url::parser::ParseError
impl Eq for tinystr::error::ParseError
impl Eq for ParseFloatError
impl Eq for ParseIntError
impl Eq for ParseLevelError
impl Eq for ParserConfig
impl Eq for Path
impl Eq for PathBuf
impl Eq for Permissions
impl Eq for PhantomPinned
impl Eq for PotentialCodePoint
impl Eq for PotentialUtf8
impl Eq for PotentialUtf16
impl Eq for Private
impl Eq for ProcessingError
impl Eq for ProcessingSuccess
impl Eq for http_request::Protocol
impl Eq for socket2::Protocol
impl Eq for ProtocolVersion
impl Eq for Proxy
impl Eq for ProxyType
impl Eq for RangeFull
impl Eq for Ready
impl Eq for std::sync::mpsc::RecvError
impl Eq for tokio::sync::broadcast::error::RecvError
impl Eq for tokio::sync::oneshot::error::RecvError
impl Eq for RecvFlags
impl Eq for RecvTimeoutError
impl Eq for Region
impl Eq for RegionOverride
impl Eq for RegionalSubdivision
impl Eq for Request
impl Eq for RequestConfig
impl Eq for RequestError
impl Eq for RequeueOp
impl Eq for RequiredEkuNotFoundContext
impl Eq for Response
impl Eq for ResponseError
impl Eq for RevocationCheckDepth
impl Eq for RevocationReason
impl Eq for RuntimeFlavor
impl Eq for icu_locale_core::subtags::script::Script
impl Eq for icu_properties::props::Script
impl Eq for SearchStep
impl Eq for SeekFrom
impl Eq for SentenceBreak
impl Eq for SentenceBreakSupressions
impl Eq for Shutdown
impl Eq for SigId
impl Eq for Sign
impl Eq for SignalKind
impl Eq for SignatureAlgorithm
impl Eq for SignatureScheme
impl Eq for SimdAlign
impl Eq for SmallRng
impl Eq for SockAddr
impl Eq for SocketAddr
impl Eq for SocketAddrV4
impl Eq for SocketAddrV6
impl Eq for http_type::status::enum::Status
impl Eq for flate2::mem::Status
impl Eq for StdRng
impl Eq for StreamResult
impl Eq for String
impl Eq for StripPrefixError
impl Eq for SubdivisionId
impl Eq for SubdivisionSuffix
impl Eq for icu_locale_core::extensions::private::other::Subtag
impl Eq for icu_locale_core::subtags::Subtag
impl Eq for SupportedProtocolVersion
impl Eq for SyntaxViolation
impl Eq for SystemTime
impl Eq for TDEFLFlush
impl Eq for TDEFLStatus
impl Eq for TINFLStatus
impl Eq for TextPosition
impl Eq for ThreadId
impl Eq for TimeZoneShortId
impl Eq for Token
impl Eq for Transform
impl Eq for TrieType
impl Eq for TryAcquireError
impl Eq for TryFromCharError
impl Eq for TryFromFloatSecsError
impl Eq for TryFromIntError
impl Eq for TryGetError
impl Eq for std::sync::mpsc::TryRecvError
impl Eq for tokio::sync::broadcast::error::TryRecvError
impl Eq for tokio::sync::mpsc::error::TryRecvError
impl Eq for tokio::sync::oneshot::error::TryRecvError
impl Eq for TryReserveError
impl Eq for TryReserveErrorKind
impl Eq for Type
impl Eq for TypeId
impl Eq for std::os::unix::net::ucred::UCred
impl Eq for tokio::net::unix::ucred::UCred
impl Eq for UleError
impl Eq for Unicode
impl Eq for UniformChar
impl Eq for UniformDuration
impl Eq for UniformUsize
impl Eq for UnixTime
impl Eq for UnknownStatusPolicy
impl Eq for UnorderedKeyError
impl Eq for UnparkResult
impl Eq for UnparkToken
impl Eq for UnsupportedOperationError
impl Eq for UnsupportedSignatureAlgorithmContext
impl Eq for UnsupportedSignatureAlgorithmForPublicKeyContext
impl Eq for UpgradeType
impl Eq for Url
URLs compare like their serialization.
impl Eq for Utf8Error
impl Eq for serde_json::value::Value
impl Eq for icu_locale_core::extensions::transform::value::Value
impl Eq for icu_locale_core::extensions::unicode::value::Value
impl Eq for VarError
impl Eq for Variant
impl Eq for VariantId
impl Eq for Variants
impl Eq for VerticalOrientation
impl Eq for std::sync::WaitTimeoutResult
impl Eq for parking_lot::condvar::WaitTimeoutResult
impl Eq for WebSocketFrame
impl Eq for WebSocketOpcode
impl Eq for WordBreak
impl Eq for XmlVersion
impl Eq for Xoshiro128PlusPlus
impl Eq for Xoshiro256PlusPlus
impl Eq for ZeroTrieBuildError
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 str
impl Eq for u8
impl Eq for u16
impl Eq for u32
impl Eq for u64
impl Eq for u128
impl Eq for usize
impl<'a, T, F> Eq for VarZeroVec<'a, T, F>
impl<'a, V> Eq for VarZeroCow<'a, V>
impl<'a> Eq for xml::attribute::Attribute<'a>
impl<'a> Eq for CertificateDer<'a>
impl<'a> Eq for CertificateRevocationListDer<'a>
impl<'a> Eq for CertificateSigningRequestDer<'a>
impl<'a> Eq for Component<'a>
impl<'a> Eq for DataIdentifierBorrowed<'a>
impl<'a> Eq for DataRequest<'a>
impl<'a> Eq for Der<'a>
impl<'a> Eq for DnsName<'a>
impl<'a> Eq for EchConfigListBytes<'a>
impl<'a> Eq for FfdheGroup<'a>
impl<'a> Eq for Metadata<'a>
impl<'a> Eq for MetadataBuilder<'a>
impl<'a> Eq for Name<'a>
impl<'a> Eq for PercentEncode<'a>
impl<'a> Eq for PhantomContravariantLifetime<'a>
impl<'a> Eq for PhantomCovariantLifetime<'a>
impl<'a> Eq for PhantomInvariantLifetime<'a>
impl<'a> Eq for Prefix<'a>
impl<'a> Eq for PrefixComponent<'a>
impl<'a> Eq for PrivateKeyDer<'a>
impl<'a> Eq for PrivatePkcs1KeyDer<'a>
impl<'a> Eq for PrivatePkcs8KeyDer<'a>
impl<'a> Eq for PrivateSec1KeyDer<'a>
impl<'a> Eq for ScriptExtensionsSet<'a>
impl<'a> Eq for ServerName<'a>
impl<'a> Eq for SubjectPublicKeyInfoDer<'a>
impl<'a> Eq for TrustAnchor<'a>
impl<'a> Eq for Utf8Chunk<'a>
impl<'a> Eq for Utf8Pattern<'a>
impl<'data, T> Eq for PropertyCodePointMap<'data, T>
impl<'data> Eq for Char16Trie<'data>
impl<'data> Eq for CodePointInversionList<'data>
impl<'data> Eq for CodePointInversionListAndStringList<'data>
impl<'data> Eq for PropertyCodePointSet<'data>
impl<'data> Eq for PropertyUnicodeSet<'data>
impl<'data> Eq for ScriptWithExtensionsProperty<'data>
impl<'trie, T> Eq for CodePointTrie<'trie, T>
impl<A, B, C, D, E, F, Format> Eq for Tuple6VarULE<A, B, C, D, E, F, Format>
impl<A, B, C, D, E, F> Eq for Tuple6ULE<A, B, C, D, E, F>
impl<A, B, C, D, E, Format> Eq for Tuple5VarULE<A, B, C, D, E, Format>
impl<A, B, C, D, E> Eq for Tuple5ULE<A, B, C, D, E>
impl<A, B, C, D, Format> Eq for Tuple4VarULE<A, B, C, D, Format>
impl<A, B, C, D> Eq for Tuple4ULE<A, B, C, D>
impl<A, B, C, Format> Eq for Tuple3VarULE<A, B, C, Format>
impl<A, B, C> Eq for Tuple3ULE<A, B, C>
impl<A, B, Format> Eq for Tuple2VarULE<A, B, Format>
impl<A, B> Eq for Tuple2ULE<A, B>
impl<A, B> Eq for VarTuple<A, B>
impl<A, V> Eq for VarTupleULE<A, V>
impl<A> Eq for &A
impl<A> Eq for &mut A
impl<A> Eq for Aad<A>where
A: Eq,
impl<A> Eq for SmallVec<A>
impl<B, C> Eq for ControlFlow<B, C>
impl<B> Eq for Cow<'_, B>
impl<C0, C1> Eq for EitherCart<C0, C1>
impl<DataStruct> Eq for ErasedMarker<DataStruct>
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::range::Range<Idx>where
Idx: Eq,
impl<Idx> Eq for core::ops::range::RangeFrom<Idx>where
Idx: Eq,
impl<Idx> Eq for core::range::RangeFrom<Idx>where
Idx: Eq,
impl<Idx> Eq for core::ops::range::RangeInclusive<Idx>where
Idx: Eq,
impl<Idx> Eq for core::range::RangeInclusive<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeTo<Idx>where
Idx: Eq,
impl<Idx> Eq for core::ops::range::RangeToInclusive<Idx>where
Idx: Eq,
impl<Idx> Eq for core::range::RangeToInclusive<Idx>where
Idx: Eq,
impl<K, V, A> Eq for BTreeMap<K, V, A>
impl<K, V, S, A> Eq for HashMap<K, V, S, A>
impl<K, V, S> Eq for LiteMap<K, V, S>
impl<M, O> Eq for DataPayloadOr<M, O>where
M: DynamicDataMarker,
<<M as DynamicDataMarker>::DataStruct as Yokeable<'a>>::Output: for<'a> Eq,
O: Eq,
impl<M> Eq for DataPayload<M>where
M: DynamicDataMarker,
<<M as DynamicDataMarker>::DataStruct as Yokeable<'a>>::Output: for<'a> Eq,
impl<Ptr> Eq for Pin<Ptr>
impl<R> Eq for UnwrapErr<R>
impl<S> Eq for Host<S>where
S: Eq,
impl<Store> Eq for ZeroAsciiIgnoreCaseTrie<Store>
impl<Store> Eq for ZeroTrie<Store>where
Store: Eq,
impl<Store> Eq for ZeroTrieExtendedCapacity<Store>
impl<Store> Eq for ZeroTriePerfectHash<Store>
impl<Store> Eq for ZeroTrieSimpleAscii<Store>
impl<T, A> Eq for Arc<T, A>
impl<T, A> Eq for BTreeSet<T, A>where
T: Eq,
A: AllocatorClone,
impl<T, A> Eq for Box<T, A>
impl<T, A> Eq for LinkedList<T, A>
impl<T, A> Eq for Rc<T, A>
impl<T, A> Eq for UniqueArc<T, A>
impl<T, A> Eq for UniqueRc<T, A>
impl<T, A> Eq for Vec<T, A>
impl<T, A> Eq for VecDeque<T, A>
impl<T, E> Eq for Result<T, E>
impl<T, F> Eq for VarZeroSlice<T, F>
impl<T, S, A> Eq for HashSet<T, S, A>
impl<T, const N: usize> Eq for Simd<T, N>where
T: SimdElement + Eq,
impl<T, const N: usize> Eq for [T; N]where
T: Eq,
impl<T, const VARIANT: u32, const FIELD: u32> Eq for FieldRepresentingType<T, VARIANT, FIELD>where
T: ?Sized,
impl<T> Eq for (T₁, T₂, …, Tₙ)where
T: Eq,
This trait is implemented for tuples up to twelve items long.
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.