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 shadow_rs::fmt::Alignment
impl Eq for DebugAsHex
impl Eq for Sign
impl Eq for TryReserveErrorKind
impl Eq for AsciiChar
impl Eq for CharCase
impl Eq for core::cmp::Ordering
impl Eq for Infallible
impl Eq for FromBytesWithNulError
impl Eq for Locality
impl Eq for AtomicOrdering
impl Eq for SimdAlign
impl Eq for ErrorKind
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 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 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 CalendarAlgorithm
impl Eq for HijriCalendarAlgorithm
impl Eq for CollationCaseFirst
impl Eq for CollationNumericOrdering
impl Eq for CollationType
impl Eq for CurrencyFormatStyle
impl Eq for EmojiPresentationStyle
impl Eq for FirstDay
impl Eq for HourCycle
impl Eq for LineBreakStyle
impl Eq for LineBreakWordHandling
impl Eq for MeasurementSystem
impl Eq for MeasurementUnitOverride
impl Eq for SentenceBreakSupressions
impl Eq for CommonVariantType
impl Eq for Decomposed
impl Eq for BidiPairedBracketType
impl Eq for GeneralCategory
impl Eq for BufferFormat
impl Eq for DataErrorKind
impl Eq for DnsLength
impl Eq for ErrorPolicy
impl Eq for Hyphens
impl Eq for ProcessingError
impl Eq for ProcessingSuccess
impl Eq for Era
impl Eq for Weekday
impl Eq for Meridiem
impl Eq for PiecesOffset
impl Eq for Unit
impl Eq for AmbiguousOffset
impl Eq for Dst
impl Eq for RoundMode
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 tinystr::error::ParseError
impl Eq for Origin
impl Eq for url::parser::ParseError
impl Eq for SyntaxViolation
impl Eq for ZeroTrieBuildError
impl Eq for UleError
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 String
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 core::mem::alignment::Alignment
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 ParseIntError
impl Eq for TryFromIntError
impl Eq for ParseFloatError
impl Eq for RangeFull
impl Eq for Location<'_>
impl Eq for ParseBoolError
impl Eq for core::str::error::Utf8Error
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 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 ThreadId
impl Eq for AccessError
impl Eq for Instant
impl Eq for SystemTime
impl Eq for FromOsStrError
impl Eq for FromOsStringError
impl Eq for FromPathBufError
impl Eq for FromPathError
impl Eq for Utf8Path
impl Eq for Utf8PathBuf
impl Eq for Ident
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 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 DataLocale
impl Eq for Other
impl Eq for icu_locale_core::extensions::private::other::Subtag
impl Eq for Private
impl Eq for Extensions
impl Eq for Fields
impl Eq for icu_locale_core::extensions::transform::key::Key
impl Eq for Transform
impl Eq for icu_locale_core::extensions::transform::value::Value
impl Eq for Attribute
impl Eq for Attributes
impl Eq for icu_locale_core::extensions::unicode::key::Key
impl Eq for Keywords
impl Eq for Unicode
impl Eq for SubdivisionId
impl Eq for SubdivisionSuffix
impl Eq for icu_locale_core::extensions::unicode::value::Value
impl Eq for LanguageIdentifier
impl Eq for Locale
impl Eq for CurrencyType
impl Eq for NumberingSystem
impl Eq for RegionOverride
impl Eq for RegionalSubdivision
impl Eq for TimeZoneShortId
impl Eq for LocalePreferences
impl Eq for Language
impl Eq for Region
impl Eq for icu_locale_core::subtags::script::Script
impl Eq for icu_locale_core::subtags::Subtag
impl Eq for Variant
impl Eq for Variants
impl Eq for BidiMirroringGlyph
impl Eq for GeneralCategoryULE
impl Eq for BidiClass
impl Eq for CanonicalCombiningClass
impl Eq for EastAsianWidth
impl Eq for GeneralCategoryGroup
impl Eq for GeneralCategoryOutOfBoundsError
impl Eq for GraphemeClusterBreak
impl Eq for HangulSyllableType
impl Eq for IndicConjunctBreak
impl Eq for IndicSyllabicCategory
impl Eq for JoiningGroup
impl Eq for JoiningType
impl Eq for LineBreak
impl Eq for NumericType
impl Eq for icu_properties::props::Script
impl Eq for SentenceBreak
impl Eq for VerticalOrientation
impl Eq for WordBreak
impl Eq for DataError
impl Eq for DataMarkerId
impl Eq for DataMarkerIdHash
impl Eq for DataMarkerInfo
impl Eq for DataMarkerAttributes
impl Eq for DataRequestMetadata
impl Eq for AsciiDenyList
impl Eq for Date
impl Eq for DateTime
impl Eq for ISOWeekDate
impl Eq for jiff::civil::time::Time
impl Eq for PiecesNumericOffset
impl Eq for SignedDuration
impl Eq for SpanFieldwise
impl Eq for Timestamp
impl Eq for AmbiguousTimestamp
impl Eq for AmbiguousZoned
impl Eq for Offset
impl Eq for TimeZone
impl Eq for Zoned
impl Eq for TryIntoArrayError
impl Eq for konst_macro_rules::string::Utf8Error
impl Eq for git_index_time
impl Eq for git_time
impl Eq for ParseLevelError
impl Eq for AsciiSet
impl Eq for PotentialCodePoint
impl Eq for PotentialUtf8
impl Eq for PotentialUtf16
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 OpaqueOrigin
impl Eq for Url
URLs compare like their serialization.
impl Eq for LengthHint
impl Eq for AsciiProbeResult
impl Eq for CharULE
impl Eq for Index8
impl Eq for Index16
impl Eq for Index32
impl<'a> Eq for Utf8Pattern<'a>
impl<'a> Eq for Component<'a>
impl<'a> Eq for Prefix<'a>
impl<'a> Eq for Utf8Component<'a>
impl<'a> Eq for Utf8Prefix<'a>
impl<'a> Eq for PhantomContravariantLifetime<'a>
impl<'a> Eq for PhantomCovariantLifetime<'a>
impl<'a> Eq for PhantomInvariantLifetime<'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 ScriptExtensionsSet<'a>
impl<'a> Eq for DataIdentifierBorrowed<'a>
impl<'a> Eq for DataRequest<'a>
impl<'a> Eq for log::Metadata<'a>
impl<'a> Eq for MetadataBuilder<'a>
impl<'a> Eq for PercentEncode<'a>
impl<'a, T, F> Eq for VarZeroVec<'a, T, F>
impl<'a, V> Eq for VarZeroCow<'a, V>
impl<'d> Eq for TimeZoneName<'d>
impl<'data> Eq for PropertyCodePointSet<'data>
impl<'data> Eq for PropertyUnicodeSet<'data>
impl<'data> Eq for Char16Trie<'data>
impl<'data> Eq for CodePointInversionList<'data>
impl<'data> Eq for CodePointInversionListAndStringList<'data>
impl<'data> Eq for ScriptWithExtensionsProperty<'data>
impl<'data, T> Eq for PropertyCodePointMap<'data, T>
impl<'n> Eq for TimeZoneAnnotationKind<'n>
impl<'n> Eq for Pieces<'n>
impl<'n> Eq for TimeZoneAnnotation<'n>
impl<'n> Eq for TimeZoneAnnotationName<'n>
impl<'repo> Eq for Reference<'repo>
impl<'string> Eq for AttrValue<'string>
impl<'t> Eq for TimeZoneOffsetInfo<'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> Eq for VarTuple<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<A, B, C, D, E, F, Format> Eq for Tuple6VarULE<A, B, C, D, E, F, Format>
impl<A, B, C, D, E, Format> Eq for Tuple5VarULE<A, B, C, D, E, Format>
impl<A, B, C, D, Format> Eq for Tuple4VarULE<A, B, C, D, Format>
impl<A, B, C, Format> Eq for Tuple3VarULE<A, B, C, Format>
impl<A, B, Format> Eq for Tuple2VarULE<A, B, Format>
impl<A, V> Eq for VarTupleULE<A, V>
impl<B> Eq for Cow<'_, B>
impl<B, C> Eq for ControlFlow<B, C>
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::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 core::ops::range::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<Idx> Eq for core::range::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, A> Eq for HashMap<K, V, S, A>
impl<M> Eq for DataPayload<M>where
M: DynamicDataMarker,
<<M as DynamicDataMarker>::DataStruct as Yokeable<'a>>::Output: for<'a> Eq,
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<Ptr> Eq for Pin<Ptr>
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> 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ₙ)where
T: Eq,
This trait is implemented for tuples up to twelve items long.