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 == aanda != bimplies!(a == b) - transitive:
a == bandb == cimpliesa == 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§
impl Eq for hyperlane::atomic::Ordering
impl Eq for BacktraceStyle
impl Eq for AsciiChar
impl Eq for hyperlane::ContentType
impl Eq for FpCategory
impl Eq for GetManyMutError
impl Eq for hyperlane::HttpVersion
impl Eq for Infallible
impl Eq for IntErrorKind
impl Eq for hyperlane::IpAddr
impl Eq for Ipv6MulticastScope
impl Eq for hyperlane::Methods
impl Eq for hyperlane::Ordering
impl Eq for hyperlane::Protocol
impl Eq for Shutdown
impl Eq for SocketAddr
impl Eq for TryReserveErrorKind
impl Eq for core::fmt::Alignment
impl Eq for DebugAsHex
impl Eq for Sign
impl Eq for BacktraceStatus
impl Eq for VarError
impl Eq for SeekFrom
impl Eq for std::io::error::ErrorKind
impl Eq for TlsProtocolId
impl Eq for AlgorithmId
impl Eq for OperatingMode
impl Eq for KbkdfCtrHmacAlgorithmId
impl Eq for SskdfDigestAlgorithmId
impl Eq for SskdfHmacAlgorithmId
impl Eq for BlockCipherId
impl Eq for KeySize
impl Eq for point_conversion_form_t
impl Eq for BrotliEncoderMode
impl Eq for CodeBlockState
impl Eq for BrotliEncoderOperation
impl Eq for BrotliEncoderStreamState
impl Eq for BrotliEncoderParameter
impl Eq for FlushCompress
impl Eq for FlushDecompress
impl Eq for Status
impl Eq for Compress
impl Eq for http_type::content_type::type::ContentType
impl Eq for http_type::http_version::type::HttpVersion
impl Eq for http_type::methods::type::Methods
impl Eq for http_type::protocol::type::Protocol
impl Eq for TrieType
impl Eq for ExtensionType
impl Eq for Direction
impl Eq for Decomposed
impl Eq for BidiPairingProperties
impl Eq for PropertiesError
impl Eq for GeneralCategory
impl Eq for CheckedBidiPairedBracketType
impl Eq for BufferFormat
impl Eq for DataErrorKind
impl Eq for LocaleFallbackPriority
impl Eq for LocaleFallbackSupplement
impl Eq for DnsLength
impl Eq for ErrorPolicy
impl Eq for Hyphens
impl Eq for ProcessingError
impl Eq for ProcessingSuccess
impl Eq for Level
impl Eq for LevelFilter
impl Eq for CompressionStrategy
impl Eq for TDEFLFlush
impl Eq for TDEFLStatus
impl Eq for miniz_oxide::deflate::CompressionLevel
impl Eq for DataFormat
impl Eq for MZError
impl Eq for MZFlush
impl Eq for MZStatus
impl Eq for TINFLStatus
impl Eq for rustls_pki_types::server_name::IpAddr
impl Eq for ExpirationPolicy
impl Eq for RevocationCheckDepth
impl Eq for UnknownStatusPolicy
impl Eq for RevocationReason
impl Eq for DerTypeId
impl Eq for webpki::error::Error
impl Eq for EchStatus
impl Eq for rustls::compress::CompressionLevel
impl Eq for AlertDescription
impl Eq for CertificateCompressionAlgorithm
impl Eq for CipherSuite
impl Eq for rustls::enums::ContentType
impl Eq for HandshakeType
impl Eq for ProtocolVersion
impl Eq for SignatureAlgorithm
impl Eq for SignatureScheme
impl Eq for EncryptedClientHelloError
impl Eq for InconsistentKeys
impl Eq for HashAlgorithm
impl Eq for NamedGroup
impl Eq for Category
impl Eq for serde_json::value::Value
impl Eq for serde_urlencoded::ser::Error
impl Eq for TinyStrError
impl Eq for Origin
impl Eq for ParseError
impl Eq for SyntaxViolation
impl Eq for XmlVersion
impl Eq for xml::reader::error::ErrorKind
impl Eq for Encoding
impl Eq for ZeroVecError
impl Eq for FlexZeroVec<'_>
impl Eq for RecvTimeoutError
impl Eq for TryRecvError
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 UnorderedKeyError
impl Eq for CString
impl Eq for FromVecWithNulError
impl Eq for IntoStringError
impl Eq for NulError
impl Eq for Layout
impl Eq for LayoutError
impl Eq for AllocError
impl Eq for CpuidResult
impl Eq for CStr
impl Eq for FromBytesUntilNulError
impl Eq for FromBytesWithNulError
impl Eq for core::fmt::Error
impl Eq for FormattingOptions
impl Eq for PhantomPinned
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 ExitStatus
impl Eq for ExitStatusError
impl Eq for Output
impl Eq for AccessError
impl Eq for ThreadId
impl Eq for Instant
impl Eq for SystemTime
impl Eq for aws_lc_rs::aead::quic::Algorithm
impl Eq for aws_lc_rs::aead::Algorithm
impl Eq for aws_lc_rs::agreement::Algorithm
impl Eq for aws_lc_rs::cipher::Algorithm
impl Eq for aws_lc_rs::digest::Algorithm
impl Eq for EcdsaSigningAlgorithm
impl Eq for EcdsaVerificationAlgorithm
impl Eq for Unspecified
impl Eq for aws_lc_rs::hkdf::Algorithm
impl Eq for aws_lc_rs::hmac::Algorithm
impl Eq for KbkdfCtrHmacAlgorithm
impl Eq for SskdfDigestAlgorithm
impl Eq for SskdfHmacAlgorithm
impl Eq for aws_lc_rs::pbkdf2::Algorithm
impl Eq for ACCESS_DESCRIPTION_st
impl Eq for ASN1_ADB_TABLE_st
impl Eq for ASN1_ADB_st
impl Eq for ASN1_AUX_st
impl Eq for ASN1_EXTERN_FUNCS_st
impl Eq for ASN1_ITEM_st
impl Eq for ASN1_TEMPLATE_st
impl Eq for AUTHORITY_KEYID_st
impl Eq for BASIC_CONSTRAINTS_st
impl Eq for CRYPTO_dynlock
impl Eq for CRYPTO_dynlock_value
impl Eq for DES_cblock_st
impl Eq for DES_ks
impl Eq for DIST_POINT_st
impl Eq for DSA_SIG_st
impl Eq for EC_builtin_curve
impl Eq for EDIPartyName_st
impl Eq for GENERAL_SUBTREE_st
impl Eq for HRSS_private_key
impl Eq for HRSS_public_key
impl Eq for ISSUING_DIST_POINT_st
impl Eq for NAME_CONSTRAINTS_st
impl Eq for NOTICEREF_st
impl Eq for Netscape_spkac_st
impl Eq for Netscape_spki_st
impl Eq for POLICYINFO_st
impl Eq for POLICY_CONSTRAINTS_st
impl Eq for POLICY_MAPPING_st
impl Eq for RIPEMD160state_st
impl Eq for USERNOTICE_st
impl Eq for X509_algor_st
impl Eq for X509_info_st
impl Eq for _IO_FILE
impl Eq for aes_key_st
impl Eq for asn1_string_st
impl Eq for bf_key_st
impl Eq for bignum_st
impl Eq for bio_method_st
impl Eq for bio_st
impl Eq for blake2b_state_st
impl Eq for bn_mont_ctx_st
impl Eq for buf_mem_st
impl Eq for cbb_buffer_st
impl Eq for cbb_child_st
impl Eq for cbs_st
impl Eq for conf_st
impl Eq for conf_value_st
impl Eq for crypto_ex_data_st
impl Eq for ecdsa_sig_st
impl Eq for env_md_ctx_st
impl Eq for evp_cipher_ctx_st
impl Eq for evp_cipher_info_st
impl Eq for evp_encode_ctx_st
impl Eq for evp_hpke_key_st
impl Eq for md4_state_st
impl Eq for md5_state_st
impl Eq for obj_name_st
impl Eq for otherName_st
impl Eq for pkcs7_envelope_st
impl Eq for pkcs7_issuer_and_serial_st
impl Eq for pkcs7_recip_info_st
impl Eq for pkcs7_sign_envelope_st
impl Eq for pkcs7_signed_st
impl Eq for pkcs7_signer_info_st
impl Eq for private_key_st
impl Eq for rand_meth_st
impl Eq for rc4_key_st
impl Eq for rsa_pss_params_st
impl Eq for sha256_state_st
impl Eq for sha512_state_st
impl Eq for sha_state_st
impl Eq for tm
impl Eq for trust_token_st
impl Eq for v3_ext_ctx
impl Eq for v3_ext_method
impl Eq for x509_purpose_st
impl Eq for x509_trust_st
impl Eq for LiteralPredictionModeNibble
impl Eq for Compression
impl Eq for http_type::http_url::type::HttpUrlComponents
impl Eq for CodePointInversionListULE
impl Eq for CodePointInversionListAndStringListULE
impl Eq for CodePointTrieHeader
impl Eq for Other
impl Eq for icu_locid::extensions::other::subtag::Subtag
impl Eq for icu_locid::extensions::private::other::Subtag
impl Eq for Private
impl Eq for Extensions
impl Eq for Fields
impl Eq for icu_locid::extensions::transform::key::Key
impl Eq for Transform
impl Eq for icu_locid::extensions::transform::value::Value
impl Eq for icu_locid::extensions::unicode::attribute::Attribute
impl Eq for Attributes
impl Eq for icu_locid::extensions::unicode::key::Key
impl Eq for Keywords
impl Eq for Unicode
impl Eq for icu_locid::extensions::unicode::value::Value
impl Eq for LanguageIdentifier
impl Eq for Locale
impl Eq for Language
impl Eq for Region
impl Eq for icu_locid::subtags::script::Script
impl Eq for Variant
impl Eq for Variants
impl Eq for LanguageStrStrPairVarULE
impl Eq for StrStrPairVarULE
impl Eq for BidiMirroringProperties
impl Eq for BidiClass
impl Eq for CanonicalCombiningClass
impl Eq for EastAsianWidth
impl Eq for GeneralCategoryGroup
impl Eq for GraphemeClusterBreak
impl Eq for HangulSyllableType
impl Eq for IndicSyllabicCategory
impl Eq for JoiningType
impl Eq for LineBreak
impl Eq for icu_properties::props::Script
impl Eq for SentenceBreak
impl Eq for WordBreak
impl Eq for CheckedBidiPairedBracketTypeULE
impl Eq for MirroredPairedBracketDataTryFromError
impl Eq for NormalizedPropertyNameStr
impl Eq for DataError
impl Eq for LocaleFallbackConfig
impl Eq for DataKey
impl Eq for DataKeyHash
impl Eq for DataKeyMetadata
impl Eq for DataKeyPath
impl Eq for DataLocale
impl Eq for DataRequestMetadata
impl Eq for AsciiDenyList
impl Eq for ParseLevelError
impl Eq for StreamResult
impl Eq for rustls_pki_types::server_name::AddrParseError
impl Eq for rustls_pki_types::server_name::Ipv4Addr
impl Eq for rustls_pki_types::server_name::Ipv6Addr
impl Eq for AlgorithmIdentifier
impl Eq for UnixTime
impl Eq for IoState
impl Eq for UnsupportedOperationError
impl Eq for HpkeSuite
impl Eq for SupportedProtocolVersion
impl Eq for Map<String, Value>
impl Eq for Number
impl Eq for EndOfInput
impl Eq for OpaqueOrigin
impl Eq for Url
URLs compare like their serialization.
impl Eq for LengthHint
impl Eq for OwnedAttribute
impl Eq for TextPosition
impl Eq for OwnedName
impl Eq for Namespace
impl Eq for NamespaceStack
impl Eq for ParserConfig2
impl Eq for ParserConfig
impl Eq for xml::reader::error::Error
impl Eq for EmitterConfig
impl Eq for FlexZeroVecOwned
impl Eq for FlexZeroSlice
impl Eq for CharULE
impl Eq for MultiFieldsULE
impl Eq for UnvalidatedChar
impl Eq for UnvalidatedStr
impl Eq for Index16
impl Eq for Index32
impl Eq for RecvError
impl Eq for hyperlane::AddrParseError
impl Eq for hyperlane::Alignment
impl Eq for Assume
impl Eq for CharTryFromError
impl Eq for Components<'_>
impl Eq for DecodeUtf16Error
impl Eq for FromUtf8Error
impl Eq for HttpResponseBinary
impl Eq for HttpResponseText
impl Eq for hyperlane::HttpUrlComponents
impl Eq for hyperlane::Ipv4Addr
impl Eq for hyperlane::Ipv6Addr
impl Eq for ParseBoolError
impl Eq for ParseCharError
impl Eq for ParseFloatError
impl Eq for ParseIntError
impl Eq for Path
impl Eq for PathBuf
impl Eq for RangeFull
impl Eq for RequestBuilder
impl Eq for SocketAddrV4
impl Eq for SocketAddrV6
impl Eq for String
impl Eq for StripPrefixError
impl Eq for TryFromCharError
impl Eq for TryFromIntError
impl Eq for TryReserveError
impl Eq for TypeId
impl Eq for Utf8Error
impl Eq for WaitTimeoutResult
impl Eq for UCred
impl<'a> Eq for Component<'a>
impl<'a> Eq for Prefix<'a>
impl<'a> Eq for PrivateKeyDer<'a>
impl<'a> Eq for ServerName<'a>
impl<'a> Eq for Utf8Pattern<'a>
impl<'a> Eq for LanguageStrStrPair<'a>
impl<'a> Eq for StrStrPair<'a>
impl<'a> Eq for ScriptExtensionsSet<'a>
impl<'a> Eq for DataRequest<'a>
impl<'a> Eq for Metadata<'a>
impl<'a> Eq for MetadataBuilder<'a>
impl<'a> Eq for DnsName<'a>
impl<'a> Eq for CertificateDer<'a>
impl<'a> Eq for CertificateRevocationListDer<'a>
impl<'a> Eq for CertificateSigningRequestDer<'a>
impl<'a> Eq for Der<'a>
impl<'a> Eq for EchConfigListBytes<'a>
impl<'a> Eq for PrivatePkcs1KeyDer<'a>
impl<'a> Eq for PrivatePkcs8KeyDer<'a>
impl<'a> Eq for PrivateSec1KeyDer<'a>
impl<'a> Eq for SubjectPublicKeyInfoDer<'a>
impl<'a> Eq for TrustAnchor<'a>
impl<'a> Eq for FfdheGroup<'a>
impl<'a> Eq for xml::attribute::Attribute<'a>
impl<'a> Eq for Name<'a>
impl<'a> Eq for Location<'a>
impl<'a> Eq for PrefixComponent<'a>
impl<'a> Eq for Utf8Chunk<'a>
impl<'a, T, F> Eq for VarZeroVec<'a, T, F>
impl<'data> Eq for PropertyCodePointSetV1<'data>
impl<'data> Eq for PropertyUnicodeSetV1<'data>
impl<'data> Eq for Char16Trie<'data>
impl<'data> Eq for CodePointInversionList<'data>
impl<'data> Eq for CodePointInversionListAndStringList<'data>
impl<'data> Eq for BidiAuxiliaryPropertiesV1<'data>
impl<'data> Eq for ScriptWithExtensionsPropertyV1<'data>
impl<'data, T> Eq for PropertyCodePointMapV1<'data, T>
impl<'trie, T> Eq for CodePointTrie<'trie, T>
impl<A> Eq for &A
impl<A> Eq for &mut A
impl<A> Eq for SmallVec<A>
impl<A, B> Eq for Tuple2ULE<A, B>
impl<A, B, C> Eq for Tuple3ULE<A, B, C>
impl<A, B, C, D> Eq for Tuple4ULE<A, B, C, D>
impl<A, B, C, D, E> Eq for Tuple5ULE<A, B, C, D, E>
impl<A, B, C, D, E, F> Eq for Tuple6ULE<A, B, C, D, E, F>
impl<B> Eq for Cow<'_, B>
impl<B, C> Eq for ControlFlow<B, C>
impl<C0, C1> Eq for EitherCart<C0, C1>
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::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<Idx> Eq for hyperlane::Range<Idx>where
Idx: Eq,
impl<Idx> Eq for hyperlane::RangeFrom<Idx>where
Idx: Eq,
impl<Idx> Eq for hyperlane::RangeInclusive<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeTo<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeToInclusive<Idx>where
Idx: Eq,
impl<K, V, A> Eq for BTreeMap<K, V, A>
impl<K, V, S> Eq for LiteMap<K, V, S>
impl<K, V, S> Eq for HashMap<K, V, S>
impl<M> Eq for DataPayload<M>where
M: DataMarker,
YokeTraitHack<<<M as DataMarker>::Yokeable as Yokeable<'a>>::Output>: for<'a> Eq,
impl<Ptr> Eq for Pin<Ptr>
impl<S> Eq for Host<S>where
S: Eq,
impl<Storage> Eq for __BindgenBitfieldUnit<Storage>where
Storage: Eq,
impl<T> Eq for Bound<T>where
T: Eq,
impl<T> Eq for Option<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 TrySendError<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.