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 core::cmp::Ordering
impl Eq for Infallible
impl Eq for FromBytesWithNulError
impl Eq for AtomicOrdering
impl Eq for IpAddr
impl Eq for Ipv6MulticastScope
impl Eq for SocketAddr
impl Eq for FpCategory
impl Eq for IntErrorKind
impl Eq for core::slice::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 GitReference
impl Eq for SourceKind
impl Eq for ProfilePackageSpec
impl Eq for StringOrBool
impl Eq for TomlDebugInfo
impl Eq for TomlLintLevel
impl Eq for TomlTrimPaths
impl Eq for TomlTrimPathsValue
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 hashbrown::TryReserveError
impl Eq for TrieType
impl Eq for ExtensionType
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 indexmap::GetDisjointMutError
impl Eq for Level
impl Eq for LevelFilter
impl Eq for Op
impl Eq for serde_value::Value
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 YearRange
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 tinystr::error::ParseError
impl Eq for Offset
impl Eq for toml_edit::ser::Error
impl Eq for RuleDay
impl Eq for TransitionRule
impl Eq for Origin
impl Eq for url::parser::ParseError
impl Eq for SyntaxViolation
impl Eq for Endianness
impl Eq for Needed
impl Eq for StrContext
impl Eq for StrContextValue
impl Eq for CompareResult
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 shadow_rs::fmt::Error
impl Eq for FormattingOptions
impl Eq for SplicedStr
impl Eq for String
impl Eq for ByteString
impl Eq for UnorderedKeyError
impl Eq for alloc::collections::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 Location<'_>
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 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 PackageIdSpec
impl Eq for PartialVersion
impl Eq for RustVersion
impl Eq for StringOrVec
impl Eq for TomlOptLevel
impl Eq for TomlProfile
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 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 IndicSyllabicCategory
impl Eq for JoiningType
impl Eq for LineBreak
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 indexmap::TryReserveError
impl Eq for git_index_time
impl Eq for git_time
impl Eq for ParseLevelError
impl Eq for FloatIsNan
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 time::date::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 time::utc_date_time::UtcDateTime
impl Eq for UtcOffset
impl Eq for toml::de::Error
impl Eq for toml::ser::Error
impl Eq for toml_datetime::datetime::Date
impl Eq for Datetime
impl Eq for toml_datetime::datetime::Time
impl Eq for toml_edit::de::Error
impl Eq for TomlError
impl Eq for InternalString
impl Eq for toml_edit::key::Key
impl Eq for RawString
impl Eq for Decor
impl Eq for Repr
impl Eq for ConstTypeId
impl Eq for tz::datetime::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 EmptyError
impl Eq for BStr
impl Eq for Bytes
impl Eq for winnow::stream::range::Range
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 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 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> Eq for TimeZoneRef<'a>
impl<'a, T, F> Eq for VarZeroVec<'a, T, F>
impl<'a, V> Eq for VarZeroCow<'a, V>
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<'k> Eq for KeyMut<'k>
impl<'repo> Eq for Reference<'repo>
impl<'s> Eq for TomlKey<'s>
impl<'s> Eq for TomlString<'s>
impl<'string> Eq for AttrValue<'string>
impl<'t, T> Eq for TokenSlice<'t, T>where
T: Eq,
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<E> Eq for ParseNotNanError<E>where
E: Eq,
impl<E> Eq for ErrMode<E>where
E: Eq,
impl<F> Eq for Fwhere
F: FnPtr,
impl<H> Eq for BuildHasherDefault<H>
impl<I> Eq for InputError<I>
impl<I> Eq for LocatingSlice<I>where
I: Eq,
impl<I> Eq for Partial<I>where
I: Eq,
impl<I, E> Eq for winnow::error::ParseError<I, E>
impl<I, S> Eq for Stateful<I, S>
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> Eq for indexmap::map::slice::Slice<K, V>
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 IndexMap<K, V, S>
impl<K, V, S> Eq for LiteMap<K, V, S>
impl<K, V, S, A> Eq for hashbrown::map::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.