pub trait Eq: PartialEq { }
Expand description
Trait for comparisons corresponding to equivalence relations.
This means, that in addition to a == b
and a != b
being strict inverses,
the relation must be (for all a
, b
and c
):
- reflexive:
a == a
; - symmetric:
a == b
impliesb == a
(required byPartialEq
as well); and - transitive:
a == b
andb == c
impliesa == c
(required byPartialEq
as well).
This property cannot be checked by the compiler, and therefore Eq
implies
PartialEq
, and has no extra 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.
Implement Eq
in addition to PartialEq
if it’s guaranteed that
PartialEq::eq(a, a)
always returns true
(reflexivity), in addition to
the symmetric and transitive properties already required by PartialEq
.
§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 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 {}
Object Safety§
Implementors§
impl Eq for TryReserveErrorKind
impl Eq for AsciiChar
impl Eq for core::cmp::Ordering
impl Eq for Infallible
impl Eq for core::fmt::Alignment
impl Eq for IpAddr
impl Eq for Ipv6MulticastScope
impl Eq for SocketAddr
impl Eq for FpCategory
impl Eq for IntErrorKind
impl Eq for core::sync::atomic::Ordering
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 RecvTimeoutError
impl Eq for TryRecvError
impl Eq for base64::alphabet::ParseAlphabetError
impl Eq for base64::alphabet::ParseAlphabetError
impl Eq for base64::decode::DecodeError
impl Eq for base64::decode::DecodeError
impl Eq for base64::decode::DecodeSliceError
impl Eq for base64::decode::DecodeSliceError
impl Eq for base64::encode::EncodeSliceError
impl Eq for base64::encode::EncodeSliceError
impl Eq for base64::engine::DecodePaddingMode
impl Eq for base64::engine::DecodePaddingMode
impl Eq for borsh::nostd_io::ErrorKind
impl Eq for byte_slice_cast::Error
impl Eq for ibc_proto::cosmos::gov::v1::ProposalStatus
impl Eq for ibc_proto::cosmos::gov::v1::VoteOption
impl Eq for ibc_proto::cosmos::gov::v1beta1::ProposalStatus
impl Eq for ibc_proto::cosmos::gov::v1beta1::VoteOption
impl Eq for AuthorizationType
impl Eq for BondStatus
impl Eq for Infraction
impl Eq for ibc_proto::cosmos::staking::v1beta1::InfractionType
impl Eq for SignMode
impl Eq for BroadcastMode
impl Eq for OrderBy
impl Eq for Edition
impl Eq for VerificationState
impl Eq for EnumType
impl Eq for FieldPresence
impl Eq for JsonFormat
impl Eq for MessageEncoding
impl Eq for RepeatedFieldEncoding
impl Eq for Utf8Validation
impl Eq for Label
impl Eq for ibc_proto::google::protobuf::field_descriptor_proto::Type
impl Eq for CType
impl Eq for JsType
impl Eq for OptionRetention
impl Eq for OptionTargetType
impl Eq for OptimizeMode
impl Eq for Semantic
impl Eq for IdempotencyLevel
impl Eq for ibc_proto::ibc::applications::interchain_accounts::v1::Type
impl Eq for Order
impl Eq for ResponseResultType
impl Eq for ibc_proto::ibc::core::channel::v1::State
impl Eq for ibc_proto::ibc::core::connection::v1::State
impl Eq for ConsumerPacketDataType
impl Eq for ibc_proto::interchain_security::ccv::v1::InfractionType
impl Eq for HashOp
impl Eq for LengthOp
impl Eq for MetaForm
impl Eq for PortableForm
impl Eq for TypeDefPrimitive
impl Eq for PathError
impl Eq for InstanceType
impl Eq for Category
impl Eq for Value
impl Eq for subtle_encoding::error::Error
impl Eq for tendermint_proto::tendermint::v0_34::abci::CheckTxType
impl Eq for EvidenceType
impl Eq for tendermint_proto::tendermint::v0_34::abci::response_apply_snapshot_chunk::Result
impl Eq for tendermint_proto::tendermint::v0_34::abci::response_offer_snapshot::Result
impl Eq for tendermint_proto::tendermint::v0_34::privval::Errors
impl Eq for tendermint_proto::tendermint::v0_34::types::BlockIdFlag
impl Eq for tendermint_proto::tendermint::v0_34::types::SignedMsgType
impl Eq for tendermint_proto::tendermint::v0_37::abci::CheckTxType
impl Eq for tendermint_proto::tendermint::v0_37::abci::MisbehaviorType
impl Eq for tendermint_proto::tendermint::v0_37::abci::response_apply_snapshot_chunk::Result
impl Eq for tendermint_proto::tendermint::v0_37::abci::response_offer_snapshot::Result
impl Eq for tendermint_proto::tendermint::v0_37::abci::response_process_proposal::ProposalStatus
impl Eq for tendermint_proto::tendermint::v0_37::privval::Errors
impl Eq for tendermint_proto::tendermint::v0_37::types::BlockIdFlag
impl Eq for tendermint_proto::tendermint::v0_37::types::SignedMsgType
impl Eq for tendermint_proto::tendermint::v0_38::abci::CheckTxType
impl Eq for tendermint_proto::tendermint::v0_38::abci::MisbehaviorType
impl Eq for tendermint_proto::tendermint::v0_38::abci::response_apply_snapshot_chunk::Result
impl Eq for tendermint_proto::tendermint::v0_38::abci::response_offer_snapshot::Result
impl Eq for tendermint_proto::tendermint::v0_38::abci::response_process_proposal::ProposalStatus
impl Eq for VerifyStatus
impl Eq for tendermint_proto::tendermint::v0_38::privval::Errors
impl Eq for tendermint_proto::tendermint::v0_38::types::BlockIdFlag
impl Eq for tendermint_proto::tendermint::v0_38::types::SignedMsgType
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 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 Any
impl Eq for ibc_primitives::proto::Duration
impl Eq for ibc_primitives::proto::Timestamp
Implements the unstable/naive version of Eq
: a basic equality check on the internal fields of the Timestamp
.
This implies that normalized_ts != non_normalized_ts
even if normalized_ts == non_normalized_ts.normalized()
.
impl Eq for Signer
impl Eq for ibc_primitives::Timestamp
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 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 FromBytesWithNulError
impl Eq for core::fmt::Error
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 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 std::path::Path
impl Eq for PathBuf
impl Eq for StripPrefixError
impl Eq for ExitStatus
impl Eq for ExitStatusError
impl Eq for Output
impl Eq for WaitTimeoutResult
impl Eq for RecvError
impl Eq for AccessError
impl Eq for ThreadId
impl Eq for std::time::Instant
impl Eq for SystemTime
impl Eq for base64::alphabet::Alphabet
impl Eq for base64::alphabet::Alphabet
impl Eq for base64::engine::DecodeMetadata
impl Eq for base64::engine::DecodeMetadata
impl Eq for Bytes
impl Eq for BytesMut
impl Eq for deranged::ParseIntError
impl Eq for deranged::TryFromIntError
impl Eq for Height
impl Eq for OptionBool
impl Eq for parity_scale_codec::error::Error
impl Eq for prost::error::DecodeError
impl Eq for EncodeError
impl Eq for UnknownEnumValue
impl Eq for MetaType
impl Eq for PortableRegistry
impl Eq for PortableType
impl Eq for Registry
impl Eq for Map<String, Value>
impl Eq for Number
impl Eq for Base64
impl Eq for Hex
impl Eq for Identity
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 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 time::instant::Instant
impl Eq for OffsetDateTime
impl Eq for PrimitiveDateTime
impl Eq for Time
impl Eq for UtcOffset
impl Eq for ParseBoolError
impl Eq for Utf8Error
impl Eq for String
impl<'a> Eq for std::path::Component<'a>
impl<'a> Eq for Prefix<'a>
impl<'a> Eq for BorrowedFormatItem<'a>
impl<'a> Eq for Location<'a>
impl<'a> Eq for PrefixComponent<'a>
impl<'a> Eq for Utf8Chunk<'a>
impl<'a, T> Eq for CompactRef<'a, T>where
T: Eq,
impl<'a, T> Eq for Symbol<'a, T>where
T: Eq + 'a,
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<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<Ptr> Eq for Pin<Ptr>
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 TrySendError<T>where
T: Eq,
impl<T> Eq for TypeDef<T>
impl<T> Eq for SingleOrVec<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.