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 AnsiColor
impl Eq for Color
impl Eq for Action
impl Eq for State
impl Eq for DependencyKind
impl Eq for Applicability
impl Eq for DiagnosticLevel
impl Eq for Edition
impl Eq for Message
impl Eq for Cfg
impl Eq for CfgExpr
impl Eq for Platform
impl Eq for ArgPredicate
impl Eq for ValueHint
impl Eq for ContextKind
impl Eq for ContextValue
impl Eq for clap_builder::error::kind::ErrorKind
impl Eq for ValueSource
impl Eq for clap_builder::util::color::ColorChoice
impl Eq for colorchoice::ColorChoice
impl Eq for StackFrameOffset
impl Eq for UnwindOperation
impl Eq for nom::error::ErrorKind
impl Eq for Needed
impl Eq for Endianness
impl Eq for oneshot_uniffi::errors::RecvTimeoutError
impl Eq for oneshot_uniffi::errors::TryRecvError
impl Eq for plain::error::Error
impl Eq for Endian
impl Eq for Op
impl Eq for Category
impl Eq for Value
impl Eq for Offset
impl Eq for toml::ser::Error
impl Eq for uniffi_bindgen::bindings::kotlin::gen_kotlin::ImportRequirement
impl Eq for uniffi_bindgen::bindings::python::gen_python::ImportRequirement
impl Eq for FfiType
impl Eq for ErrorMetadata
impl Eq for LiteralMetadata
impl Eq for uniffi_meta::Metadata
impl Eq for Radix
impl Eq for UniffiTraitMetadata
impl Eq for ExternalKind
impl Eq for ObjectImpl
impl Eq for uniffi_meta::types::Type
impl Eq for Special
impl Eq for StringifierOrInheritOrStatic
impl Eq for StringifierOrStatic
impl Eq for FloatingPointType
impl Eq for IntegerType
impl Eq for CallbackResult
impl Eq for ForeignExecutorCallbackResult
impl Eq for RustCallStatusCode
impl Eq for RustFuturePoll
impl Eq for RustTaskCallbackCode
impl Eq for TargetLanguage
impl Eq for Level
impl Eq for LevelFilter
impl Eq for AsciiChar
impl Eq for uniffi::deps::static_assertions::_core::cmp::Ordering
impl Eq for Infallible
impl Eq for uniffi::deps::static_assertions::_core::fmt::Alignment
impl Eq for DebugAsHex
impl Eq for Sign
impl Eq for IpAddr
impl Eq for Ipv6MulticastScope
impl Eq for SocketAddr
impl Eq for FpCategory
impl Eq for IntErrorKind
impl Eq for GetManyMutError
impl Eq for SearchStep
impl Eq for uniffi::deps::static_assertions::_core::sync::atomic::Ordering
impl Eq for TryReserveErrorKind
impl Eq for BacktraceStatus
impl Eq for VarError
impl Eq for SeekFrom
impl Eq for std::io::error::ErrorKind
impl Eq for Shutdown
impl Eq for BacktraceStyle
impl Eq for std::sync::mpsc::RecvTimeoutError
impl Eq for std::sync::mpsc::TryRecvError
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 StripBytes
impl Eq for StripStr
impl Eq for WinconBytes
impl Eq for Ansi256Color
impl Eq for RgbColor
impl Eq for EffectIter
impl Eq for Effects
impl Eq for Reset
impl Eq for Style
impl Eq for Params
impl Eq for AsciiParser
impl Eq for Utf8Parser
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 Package
impl Eq for PackageId
impl Eq for Source
impl Eq for Target
impl Eq for Arg
impl Eq for ArgGroup
impl Eq for clap_builder::builder::os_str::OsStr
impl Eq for PossibleValue
impl Eq for ValueRange
impl Eq for Str
impl Eq for StyledStr
impl Eq for ArgMatches
impl Eq for Id
impl Eq for ArgCursor
impl Eq for RawArgs
impl Eq for MatchOptions
impl Eq for Pattern
impl Eq for goblin::elf::compression_header::compression_header32::CompressionHeader
impl Eq for goblin::elf::compression_header::compression_header64::CompressionHeader
impl Eq for goblin::elf::section_header::section_header32::SectionHeader
impl Eq for goblin::elf::section_header::section_header64::SectionHeader
impl Eq for Register
impl Eq for UnwindCode
impl Eq for oneshot_uniffi::errors::RecvError
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 Datetime
impl Eq for Time
impl Eq for toml::de::Error
impl Eq for uniffi_bindgen::interface::enum_::Enum
impl Eq for Variant
impl Eq for ResultType
impl Eq for Field
impl Eq for uniffi_bindgen::interface::record::Record
impl Eq for EmptyBindingsConfig
impl Eq for CallbackInterfaceMetadata
impl Eq for ConstructorMetadata
impl Eq for CustomTypeMetadata
impl Eq for EnumMetadata
impl Eq for FieldMetadata
impl Eq for FnMetadata
impl Eq for FnParamMetadata
impl Eq for MethodMetadata
impl Eq for NamespaceMetadata
impl Eq for ObjectMetadata
impl Eq for RecordMetadata
impl Eq for TraitMethodMetadata
impl Eq for UdlFile
impl Eq for VariantMetadata
impl Eq for utf8parse::Parser
impl Eq for BooleanLit
impl Eq for EmptyArrayLit
impl Eq for EmptyDictionaryLit
impl Eq for Any
impl Eq for ArrayBuffer
impl Eq for ArrayBufferView
impl Eq for Assign
impl Eq for Async
impl Eq for Attribute
impl Eq for Boolean
impl Eq for BufferSource
impl Eq for Byte
impl Eq for ByteString
impl Eq for Callback
impl Eq for CloseBrace
impl Eq for CloseBracket
impl Eq for CloseParen
impl Eq for Colon
impl Eq for Comma
impl Eq for Const
impl Eq for Constructor
impl Eq for DOMString
impl Eq for DataView
impl Eq for Deleter
impl Eq for Dictionary
impl Eq for Dot
impl Eq for Double
impl Eq for Ellipsis
impl Eq for weedle::term::Enum
impl Eq for weedle::term::Error
impl Eq for False
impl Eq for Float32Array
impl Eq for Float64Array
impl Eq for Float
impl Eq for FrozenArray
impl Eq for Getter
impl Eq for GreaterThan
impl Eq for Implements
impl Eq for Includes
impl Eq for Infinity
impl Eq for Inherit
impl Eq for Int8Array
impl Eq for Int16Array
impl Eq for Int32Array
impl Eq for Interface
impl Eq for Iterable
impl Eq for LegacyCaller
impl Eq for LessThan
impl Eq for Long
impl Eq for Maplike
impl Eq for Minus
impl Eq for Mixin
impl Eq for NaN
impl Eq for Namespace
impl Eq for NegInfinity
impl Eq for Null
impl Eq for Object
impl Eq for Octet
impl Eq for OpenBrace
impl Eq for OpenBracket
impl Eq for OpenParen
impl Eq for Optional
impl Eq for Or
impl Eq for Partial
impl Eq for Promise
impl Eq for QMark
impl Eq for ReadOnly
impl Eq for weedle::term::Record
impl Eq for Required
impl Eq for SemiColon
impl Eq for Sequence
impl Eq for Setlike
impl Eq for Setter
impl Eq for Short
impl Eq for Static
impl Eq for Stringifier
impl Eq for Symbol
impl Eq for True
impl Eq for Typedef
impl Eq for USVString
impl Eq for Uint8Array
impl Eq for Uint8ClampedArray
impl Eq for Uint16Array
impl Eq for Uint32Array
impl Eq for Undefined
impl Eq for Unrestricted
impl Eq for Unsigned
impl Eq for DoubleType
impl Eq for FloatType
impl Eq for LongLongType
impl Eq for LongType
impl Eq for ShortType
impl Eq for Bytes
impl Eq for BytesMut
impl Eq for ParseLevelError
impl Eq for AllocError
impl Eq for Layout
impl Eq for LayoutError
impl Eq for TypeId
impl Eq for CpuidResult
impl Eq for CharTryFromError
impl Eq for DecodeUtf16Error
impl Eq for ParseCharError
impl Eq for TryFromCharError
impl Eq for CStr
impl Eq for FromBytesUntilNulError
impl Eq for FromBytesWithNulError
impl Eq for uniffi::deps::static_assertions::_core::fmt::Error
impl Eq for FormattingOptions
impl Eq for PhantomPinned
impl Eq for Assume
impl Eq for AddrParseError
impl Eq for Ipv4Addr
impl Eq for Ipv6Addr
impl Eq for SocketAddrV4
impl Eq for SocketAddrV6
impl Eq for ParseFloatError
impl Eq for ParseIntError
impl Eq for TryFromIntError
impl Eq for RangeFull
impl Eq for uniffi::deps::static_assertions::_core::ptr::Alignment
impl Eq for ParseBoolError
impl Eq for Utf8Error
impl Eq for Duration
impl Eq for TryFromFloatSecsError
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 String
impl Eq for std::ffi::os_str::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 std::sync::mpsc::RecvError
impl Eq for WaitTimeoutResult
impl Eq for AccessError
impl Eq for ThreadId
impl Eq for Instant
impl Eq for SystemTime
impl<'a> Eq for Utf8Component<'a>
impl<'a> Eq for Utf8Prefix<'a>
impl<'a> Eq for Argument<'a>
impl<'a> Eq for ExtendedAttribute<'a>
impl<'a> Eq for IdentifierOrString<'a>
impl<'a> Eq for Definition<'a>
impl<'a> Eq for AsyncIterableInterfaceMember<'a>
impl<'a> Eq for InterfaceMember<'a>
impl<'a> Eq for IterableInterfaceMember<'a>
impl<'a> Eq for ConstValue<'a>
impl<'a> Eq for DefaultValue<'a>
impl<'a> Eq for FloatLit<'a>
impl<'a> Eq for IntegerLit<'a>
impl<'a> Eq for MixinMember<'a>
impl<'a> Eq for NamespaceMember<'a>
impl<'a> Eq for ConstType<'a>
impl<'a> Eq for NonAnyType<'a>
impl<'a> Eq for RecordKeyType<'a>
impl<'a> Eq for ReturnType<'a>
impl<'a> Eq for SingleType<'a>
impl<'a> Eq for weedle::types::Type<'a>
impl<'a> Eq for UnionMemberType<'a>
impl<'a> Eq for Utf8Pattern<'a>
impl<'a> Eq for Component<'a>
impl<'a> Eq for Prefix<'a>
impl<'a> Eq for Utf8Components<'a>
impl<'a> Eq for Utf8PrefixComponent<'a>
impl<'a> Eq for SingleArgument<'a>
impl<'a> Eq for VariadicArgument<'a>
impl<'a> Eq for ExtendedAttributeArgList<'a>
impl<'a> Eq for ExtendedAttributeIdent<'a>
impl<'a> Eq for ExtendedAttributeIdentList<'a>
impl<'a> Eq for ExtendedAttributeNamedArgList<'a>
impl<'a> Eq for ExtendedAttributeNoArgs<'a>
impl<'a> Eq for Default<'a>
impl<'a> Eq for Identifier<'a>
impl<'a> Eq for DictionaryMember<'a>
impl<'a> Eq for AttributeInterfaceMember<'a>
impl<'a> Eq for ConstMember<'a>
impl<'a> Eq for ConstructorInterfaceMember<'a>
impl<'a> Eq for DoubleTypedAsyncIterable<'a>
impl<'a> Eq for DoubleTypedIterable<'a>
impl<'a> Eq for Inheritance<'a>
impl<'a> Eq for MaplikeInterfaceMember<'a>
impl<'a> Eq for OperationInterfaceMember<'a>
impl<'a> Eq for SetlikeInterfaceMember<'a>
impl<'a> Eq for SingleTypedAsyncIterable<'a>
impl<'a> Eq for SingleTypedIterable<'a>
impl<'a> Eq for StringifierMember<'a>
impl<'a> Eq for DecLit<'a>
impl<'a> Eq for FloatValueLit<'a>
impl<'a> Eq for HexLit<'a>
impl<'a> Eq for OctLit<'a>
impl<'a> Eq for StringLit<'a>
impl<'a> Eq for AttributeMixinMember<'a>
impl<'a> Eq for OperationMixinMember<'a>
impl<'a> Eq for AttributeNamespaceMember<'a>
impl<'a> Eq for OperationNamespaceMember<'a>
impl<'a> Eq for CallbackDefinition<'a>
impl<'a> Eq for CallbackInterfaceDefinition<'a>
impl<'a> Eq for DictionaryDefinition<'a>
impl<'a> Eq for EnumDefinition<'a>
impl<'a> Eq for ImplementsDefinition<'a>
impl<'a> Eq for IncludesStatementDefinition<'a>
impl<'a> Eq for InterfaceDefinition<'a>
impl<'a> Eq for InterfaceMixinDefinition<'a>
impl<'a> Eq for NamespaceDefinition<'a>
impl<'a> Eq for PartialDictionaryDefinition<'a>
impl<'a> Eq for PartialInterfaceDefinition<'a>
impl<'a> Eq for PartialInterfaceMixinDefinition<'a>
impl<'a> Eq for PartialNamespaceDefinition<'a>
impl<'a> Eq for TypedefDefinition<'a>
impl<'a> Eq for AttributedNonAnyType<'a>
impl<'a> Eq for AttributedType<'a>
impl<'a> Eq for FrozenArrayType<'a>
impl<'a> Eq for PromiseType<'a>
impl<'a> Eq for RecordType<'a>
impl<'a> Eq for SequenceType<'a>
impl<'a> Eq for uniffi::deps::log::Metadata<'a>
impl<'a> Eq for MetadataBuilder<'a>
impl<'a> Eq for Location<'a>
impl<'a> Eq for Utf8Chunk<'a>
impl<'a> Eq for PrefixComponent<'a>
impl<'s> Eq for StripBytesIter<'s>
impl<'s> Eq for StripStrIter<'s>
impl<'s> Eq for StrippedBytes<'s>
impl<'s> Eq for StrippedStr<'s>
impl<'s> Eq for WinconBytesIter<'s>
impl<'s> Eq for ParsedArg<'s>
impl<A> Eq for &A
impl<A> Eq for &mut A
impl<B> Eq for Cow<'_, B>
impl<B, C> Eq for ControlFlow<B, C>
impl<C> Eq for anstyle_parse::Parser<C>where
C: Eq,
impl<Dyn> Eq for DynMetadata<Dyn>where
Dyn: ?Sized,
impl<E> Eq for Err<E>where
E: Eq,
impl<F> Eq for Fwhere
F: FnPtr,
impl<H> Eq for BuildHasherDefault<H>
impl<Idx> Eq for uniffi::deps::static_assertions::_core::ops::Range<Idx>where
Idx: Eq,
impl<Idx> Eq for uniffi::deps::static_assertions::_core::ops::RangeFrom<Idx>where
Idx: Eq,
impl<Idx> Eq for uniffi::deps::static_assertions::_core::ops::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 uniffi::deps::static_assertions::_core::range::Range<Idx>where
Idx: Eq,
impl<Idx> Eq for uniffi::deps::static_assertions::_core::range::RangeFrom<Idx>where
Idx: Eq,
impl<Idx> Eq for uniffi::deps::static_assertions::_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<Ptr> Eq for Pin<Ptr>
impl<T> Eq for Resettable<T>where
T: 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.