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
impliesb == a
anda != b
implies!(a == b)
- transitive:
a == b
andb == c
impliesa == 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 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
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 shadow_rs::fmt::Alignment
impl Eq for DebugAsHex
impl Eq for Sign
impl Eq for TryReserveErrorKind
impl Eq for AsciiChar
impl Eq for core::cmp::Ordering
impl Eq for Infallible
impl Eq for FromBytesWithNulError
impl Eq for IpAddr
impl Eq for Ipv6MulticastScope
impl Eq for SocketAddr
impl Eq for FpCategory
impl Eq for IntErrorKind
impl Eq for GetDisjointMutError
impl Eq for SearchStep
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 Cfg
impl Eq for CfgExpr
impl Eq for Platform
impl Eq for DependencyKind
impl Eq for Applicability
impl Eq for DiagnosticLevel
impl Eq for CrateType
impl Eq for Edition
impl Eq for TargetKind
impl Eq for ArtifactDebuginfo
impl Eq for Message
impl Eq for AutotagOption
impl Eq for BranchType
impl Eq for ConfigLevel
impl Eq for Delta
impl Eq for DiffFormat
impl Eq for git2::Direction
impl Eq for ErrorClass
impl Eq for ErrorCode
impl Eq for FetchPrune
impl Eq for FileFavor
impl Eq for FileMode
impl Eq for ObjectType
impl Eq for ReferenceType
impl Eq for RepositoryState
impl Eq for ResetType
impl Eq for StashApplyProgress
impl Eq for SubmoduleIgnore
impl Eq for SubmoduleUpdate
impl Eq for PackBuilderStage
impl Eq for TrieType
impl Eq for ExtensionType
impl Eq for icu_locid_transform::directionality::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 Op
impl Eq for Category
impl Eq for serde_json::value::Value
impl Eq for InvalidFormatDescription
impl Eq for Parse
impl Eq for ParseFromDescription
impl Eq for TryFromParsed
impl Eq for time::format_description::component::Component
impl Eq for MonthRepr
impl Eq for Padding
impl Eq for SubsecondDigits
impl Eq for UnixTimestampPrecision
impl Eq for WeekNumberRepr
impl Eq for WeekdayRepr
impl Eq for YearRepr
impl Eq for OwnedFormatItem
impl Eq for DateKind
impl Eq for FormattedComponents
impl Eq for OffsetPrecision
impl Eq for TimePrecision
impl Eq for time::month::Month
impl Eq for time::weekday::Weekday
impl Eq for TinyStrError
impl Eq for RuleDay
impl Eq for TransitionRule
impl Eq for Origin
impl Eq for ParseError
impl Eq for SyntaxViolation
impl Eq for ZeroVecError
impl Eq for FlexZeroVec<'_>
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 Error
impl Eq for FormattingOptions
impl Eq for SplicedStr
impl Eq for ByteString
impl Eq for UnorderedKeyError
impl Eq for TryReserveError
impl Eq for CString
impl Eq for FromVecWithNulError
impl Eq for IntoStringError
impl Eq for NulError
impl Eq for FromUtf8Error
impl Eq for Layout
impl Eq for LayoutError
impl Eq for AllocError
impl Eq for TypeId
impl Eq for ByteStr
impl Eq for CharTryFromError
impl Eq for ParseCharError
impl Eq for DecodeUtf16Error
impl Eq for TryFromCharError
impl Eq for CpuidResult
impl Eq for CStr
impl Eq for FromBytesUntilNulError
impl Eq for PhantomPinned
impl Eq for Assume
impl Eq for Ipv4Addr
impl Eq for Ipv6Addr
impl Eq for AddrParseError
impl Eq for SocketAddrV4
impl Eq for SocketAddrV6
impl Eq for ParseFloatError
impl Eq for core::num::error::ParseIntError
impl Eq for core::num::error::TryFromIntError
impl Eq for RangeFull
impl Eq for core::ptr::alignment::Alignment
impl Eq for ParseBoolError
impl Eq for Utf8Error
impl Eq for core::time::Duration
impl Eq for TryFromFloatSecsError
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 Path
impl Eq for PathBuf
impl Eq for StripPrefixError
impl Eq for ExitStatus
impl Eq for ExitStatusError
impl Eq for Output
impl Eq for RecvError
impl Eq for WaitTimeoutResult
impl Eq for AccessError
impl Eq for ThreadId
impl Eq for Instant
impl Eq for SystemTime
impl Eq for FromPathBufError
impl Eq for FromPathError
impl Eq for Utf8Path
impl Eq for Utf8PathBuf
impl Eq for Dependency
impl Eq for Diagnostic
impl Eq for DiagnosticCode
impl Eq for DiagnosticSpan
impl Eq for DiagnosticSpanLine
impl Eq for DiagnosticSpanMacroExpansion
impl Eq for Artifact
impl Eq for ArtifactProfile
impl Eq for BuildFinished
impl Eq for BuildScript
impl Eq for CompilerMessage
impl Eq for DepKindInfo
impl Eq for cargo_metadata::Metadata
impl Eq for Node
impl Eq for NodeDep
impl Eq for Package
impl Eq for PackageId
impl Eq for Resolve
impl Eq for Source
impl Eq for Target
impl Eq for WorkspaceDefaultMembers
impl Eq for deranged::ParseIntError
impl Eq for deranged::TryFromIntError
impl Eq for Oid
impl Eq for Signature<'_>
impl Eq for AttrCheckFlags
impl Eq for CheckoutNotificationType
impl Eq for CredentialType
impl Eq for DiffFlags
impl Eq for DiffStatsFormat
impl Eq for IndexAddOption
impl Eq for IndexEntryExtendedFlag
impl Eq for IndexEntryFlag
impl Eq for MergeAnalysis
impl Eq for MergePreference
impl Eq for OdbLookupFlags
impl Eq for PathspecFlags
impl Eq for ReferenceFormat
impl Eq for RemoteUpdateFlags
impl Eq for RepositoryInitMode
impl Eq for RepositoryOpenFlags
impl Eq for RevparseMode
impl Eq for Sort
impl Eq for StashApplyFlags
impl Eq for StashFlags
impl Eq for Status
impl Eq for SubmoduleStatus
impl Eq for IndexTime
impl Eq for git2::time::Time
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 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 git_index_time
impl Eq for git_time
impl Eq for ParseLevelError
impl Eq for BuildMetadata
impl Eq for Comparator
impl Eq for Prerelease
impl Eq for Version
impl Eq for VersionReq
impl Eq for Map<String, Value>
impl Eq for Number
impl Eq for Date
impl Eq for time::duration::Duration
impl Eq for ComponentRange
impl Eq for ConversionRange
impl Eq for DifferentVariant
impl Eq for IndeterminateOffset
impl Eq for InvalidVariant
impl Eq for Day
impl Eq for End
impl Eq for Hour
impl Eq for Ignore
impl Eq for Minute
impl Eq for time::format_description::modifier::Month
impl Eq for OffsetHour
impl Eq for OffsetMinute
impl Eq for OffsetSecond
impl Eq for Ordinal
impl Eq for Period
impl Eq for Second
impl Eq for Subsecond
impl Eq for UnixTimestamp
impl Eq for WeekNumber
impl Eq for time::format_description::modifier::Weekday
impl Eq for Year
impl Eq for Rfc2822
impl Eq for Rfc3339
impl Eq for OffsetDateTime
impl Eq for PrimitiveDateTime
impl Eq for time::time::Time
impl Eq for UtcOffset
impl Eq for UtcDateTime
impl Eq for AlternateTime
impl Eq for Julian0WithLeap
impl Eq for Julian1WithoutLeap
impl Eq for MonthWeekDay
impl Eq for LeapSecond
impl Eq for LocalTimeType
impl Eq for TimeZone
impl Eq for Transition
impl Eq for OpaqueOrigin
impl Eq for Url
URLs compare like their serialization.
impl Eq for LengthHint
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 String
impl<'a> Eq for Utf8Pattern<'a>
impl<'a> Eq for std::path::Component<'a>
impl<'a> Eq for Prefix<'a>
impl<'a> Eq for Utf8Component<'a>
impl<'a> Eq for Utf8Prefix<'a>
impl<'a> Eq for BorrowedFormatItem<'a>
impl<'a> Eq for PhantomContravariantLifetime<'a>
impl<'a> Eq for PhantomCovariantLifetime<'a>
impl<'a> Eq for PhantomInvariantLifetime<'a>
impl<'a> Eq for Location<'a>
impl<'a> Eq for Utf8Chunk<'a>
impl<'a> Eq for PrefixComponent<'a>
impl<'a> Eq for Utf8Components<'a>
impl<'a> Eq for Utf8PrefixComponent<'a>
impl<'a> Eq for TreeEntry<'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 log::Metadata<'a>
impl<'a> Eq for MetadataBuilder<'a>
impl<'a> Eq for TimeZoneRef<'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<'repo> Eq for Reference<'repo>
impl<'string> Eq for AttrValue<'string>
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::ops::range::Range<Idx>where
Idx: Eq,
impl<Idx> Eq for core::ops::range::RangeFrom<Idx>where
Idx: Eq,
impl<Idx> Eq for core::ops::range::RangeInclusive<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeTo<Idx>where
Idx: Eq,
impl<Idx> Eq for RangeToInclusive<Idx>where
Idx: Eq,
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<K, V, A> Eq for BTreeMap<K, V, A>
impl<K, V, S> Eq for HashMap<K, V, S>
impl<K, V, S> Eq for LiteMap<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<T> Eq for Option<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 SendTimeoutError<T>where
T: Eq,
impl<T> Eq for TrySendError<T>where
T: Eq,
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.
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.