Trait Eq

1.0.0 · Source
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 implies b == a and a != b implies !(a == b)
  • transitive: a == b and b == c implies a == 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§

Source§

impl Eq for AhoCorasickKind

Source§

impl Eq for aho_corasick::packed::api::MatchKind

Source§

impl Eq for aho_corasick::util::error::MatchErrorKind

Source§

impl Eq for aho_corasick::util::search::Anchored

Source§

impl Eq for aho_corasick::util::search::MatchKind

Source§

impl Eq for StartKind

Source§

impl Eq for crossbeam_channel::err::RecvTimeoutError

Source§

impl Eq for crossbeam_channel::err::TryRecvError

Source§

impl Eq for BernoulliError

Source§

impl Eq for rand::distr::uniform::Error

Source§

impl Eq for rand::distr::weighted::Error

Source§

impl Eq for State

Source§

impl Eq for regex_automata::util::look::Look

Source§

impl Eq for regex_automata::util::search::Anchored

Source§

impl Eq for regex_automata::util::search::MatchErrorKind

Source§

impl Eq for regex_automata::util::search::MatchKind

Source§

impl Eq for AssertionKind

Source§

impl Eq for Ast

Source§

impl Eq for ClassAsciiKind

Source§

impl Eq for ClassPerlKind

Source§

impl Eq for ClassSet

Source§

impl Eq for ClassSetBinaryOpKind

Source§

impl Eq for ClassSetItem

Source§

impl Eq for ClassUnicodeKind

Source§

impl Eq for ClassUnicodeOpKind

Source§

impl Eq for regex_syntax::ast::ErrorKind

Source§

impl Eq for Flag

Source§

impl Eq for FlagsItemKind

Source§

impl Eq for GroupKind

Source§

impl Eq for HexLiteralKind

Source§

impl Eq for LiteralKind

Source§

impl Eq for RepetitionKind

Source§

impl Eq for RepetitionRange

Source§

impl Eq for SpecialLiteralKind

Source§

impl Eq for regex_syntax::error::Error

Source§

impl Eq for Class

Source§

impl Eq for Dot

Source§

impl Eq for regex_syntax::hir::ErrorKind

Source§

impl Eq for HirKind

Source§

impl Eq for regex_syntax::hir::Look

Source§

impl Eq for Utf8Sequence

Source§

impl Eq for zerocopy::byteorder::BigEndian

Source§

impl Eq for zerocopy::byteorder::LittleEndian

Source§

impl Eq for AsciiChar

1.65.0 · Source§

impl Eq for BacktraceStatus

1.0.0 · Source§

impl Eq for cs431_homework::test::loom::cmp::Ordering

Source§

impl Eq for TryReserveErrorKind

1.34.0 · Source§

impl Eq for Infallible

1.0.0 · Source§

impl Eq for VarError

1.64.0 · Source§

impl Eq for FromBytesWithNulError

1.28.0 · Source§

impl Eq for cs431_homework::test::loom::fmt::Alignment

Source§

impl Eq for DebugAsHex

Source§

impl Eq for Sign

1.0.0 · Source§

impl Eq for cs431_homework::test::loom::io::ErrorKind

1.0.0 · Source§

impl Eq for SeekFrom

1.7.0 · Source§

impl Eq for IpAddr

Source§

impl Eq for Ipv6MulticastScope

1.0.0 · Source§

impl Eq for Shutdown

1.0.0 · Source§

impl Eq for SocketAddr

1.0.0 · Source§

impl Eq for FpCategory

1.55.0 · Source§

impl Eq for IntErrorKind

Source§

impl Eq for BacktraceStyle

1.86.0 · Source§

impl Eq for GetDisjointMutError

Source§

impl Eq for SearchStep

1.0.0 · Source§

impl Eq for cs431_homework::test::loom::sync::atomic::Ordering

1.12.0 · Source§

impl Eq for cs431_homework::test::loom::sync::mpmc::RecvTimeoutError

1.0.0 · Source§

impl Eq for cs431_homework::test::loom::sync::mpmc::TryRecvError

1.0.0 · Source§

impl Eq for bool

1.0.0 · Source§

impl Eq for char

1.0.0 · Source§

impl Eq for i8

1.0.0 · Source§

impl Eq for i16

1.0.0 · Source§

impl Eq for i32

1.0.0 · Source§

impl Eq for i64

1.0.0 · Source§

impl Eq for i128

1.0.0 · Source§

impl Eq for isize

Source§

impl Eq for !

1.0.0 · Source§

impl Eq for str

1.0.0 · Source§

impl Eq for u8

1.0.0 · Source§

impl Eq for u16

1.0.0 · Source§

impl Eq for u32

1.0.0 · Source§

impl Eq for u64

1.0.0 · Source§

impl Eq for u128

1.0.0 · Source§

impl Eq for ()

1.0.0 · Source§

impl Eq for usize

Source§

impl Eq for aho_corasick::util::error::MatchError

Source§

impl Eq for aho_corasick::util::primitives::PatternID

Source§

impl Eq for aho_corasick::util::primitives::PatternIDError

Source§

impl Eq for aho_corasick::util::primitives::StateID

Source§

impl Eq for aho_corasick::util::primitives::StateIDError

Source§

impl Eq for aho_corasick::util::search::Match

Source§

impl Eq for aho_corasick::util::search::Span

Source§

impl Eq for ReadyTimeoutError

Source§

impl Eq for crossbeam_channel::err::RecvError

Source§

impl Eq for SelectTimeoutError

Source§

impl Eq for TryReadyError

Source§

impl Eq for TrySelectError

Source§

impl Eq for Collector

Source§

impl Eq for getrandom::error::Error

Source§

impl Eq for UniformUsize

Source§

impl Eq for UniformChar

Source§

impl Eq for UniformDuration

Source§

impl Eq for StepRng

Source§

impl Eq for SmallRng

Source§

impl Eq for StdRng

Source§

impl Eq for ChaCha8Core

Source§

impl Eq for ChaCha8Rng

Source§

impl Eq for ChaCha12Core

Source§

impl Eq for ChaCha12Rng

Source§

impl Eq for ChaCha20Core

Source§

impl Eq for ChaCha20Rng

Source§

impl Eq for OsError

Source§

impl Eq for OverlappingState

Source§

impl Eq for LazyStateID

Source§

impl Eq for DenseTransitions

Source§

impl Eq for SparseTransitions

Source§

impl Eq for Transition

Source§

impl Eq for Unit

Source§

impl Eq for regex_automata::util::look::LookSet

Source§

impl Eq for NonMaxUsize

Source§

impl Eq for regex_automata::util::primitives::PatternID

Source§

impl Eq for regex_automata::util::primitives::PatternIDError

Source§

impl Eq for SmallIndex

Source§

impl Eq for SmallIndexError

Source§

impl Eq for regex_automata::util::primitives::StateID

Source§

impl Eq for regex_automata::util::primitives::StateIDError

Source§

impl Eq for HalfMatch

Source§

impl Eq for regex_automata::util::search::Match

Source§

impl Eq for regex_automata::util::search::MatchError

Source§

impl Eq for PatternSet

Source§

impl Eq for regex_automata::util::search::Span

Source§

impl Eq for Alternation

Source§

impl Eq for Assertion

Source§

impl Eq for CaptureName

Source§

impl Eq for ClassAscii

Source§

impl Eq for ClassBracketed

Source§

impl Eq for ClassPerl

Source§

impl Eq for ClassSetBinaryOp

Source§

impl Eq for ClassSetRange

Source§

impl Eq for ClassSetUnion

Source§

impl Eq for regex_syntax::ast::ClassUnicode

Source§

impl Eq for Comment

Source§

impl Eq for Concat

Source§

impl Eq for regex_syntax::ast::Error

Source§

impl Eq for Flags

Source§

impl Eq for FlagsItem

Source§

impl Eq for Group

Source§

impl Eq for regex_syntax::ast::Literal

Source§

impl Eq for Position

Source§

impl Eq for regex_syntax::ast::Repetition

Source§

impl Eq for RepetitionOp

Source§

impl Eq for SetFlags

Source§

impl Eq for regex_syntax::ast::Span

Source§

impl Eq for WithComments

Source§

impl Eq for regex_syntax::hir::literal::Literal

Source§

impl Eq for Seq

Source§

impl Eq for Capture

Source§

impl Eq for ClassBytes

Source§

impl Eq for ClassBytesRange

Source§

impl Eq for regex_syntax::hir::ClassUnicode

Source§

impl Eq for ClassUnicodeRange

Source§

impl Eq for regex_syntax::hir::Error

Source§

impl Eq for Hir

Source§

impl Eq for regex_syntax::hir::Literal

Source§

impl Eq for regex_syntax::hir::LookSet

Source§

impl Eq for Properties

Source§

impl Eq for regex_syntax::hir::Repetition

Source§

impl Eq for Utf8Range

Source§

impl Eq for zerocopy::error::AllocError

Source§

impl Eq for Request

Source§

impl Eq for cs431_homework::test::loom::alloc::AllocError

1.28.0 · Source§

impl Eq for Layout

1.50.0 · Source§

impl Eq for LayoutError

1.0.0 · Source§

impl Eq for TypeId

1.27.0 · Source§

impl Eq for CpuidResult

Source§

impl Eq for ByteStr

Source§

impl Eq for ByteString

1.34.0 · Source§

impl Eq for CharTryFromError

1.9.0 · Source§

impl Eq for DecodeUtf16Error

1.20.0 · Source§

impl Eq for ParseCharError

1.59.0 · Source§

impl Eq for TryFromCharError

Source§

impl Eq for UnorderedKeyError

1.57.0 · Source§

impl Eq for TryReserveError

1.64.0 · Source§

impl Eq for CStr

1.64.0 · Source§

impl Eq for CString

1.69.0 · Source§

impl Eq for FromBytesUntilNulError

1.64.0 · Source§

impl Eq for FromVecWithNulError

1.64.0 · Source§

impl Eq for IntoStringError

1.64.0 · Source§

impl Eq for NulError

1.0.0 · Source§

impl Eq for OsStr

1.0.0 · Source§

impl Eq for OsString

1.0.0 · Source§

impl Eq for cs431_homework::test::loom::fmt::Error

Source§

impl Eq for FormattingOptions

1.1.0 · Source§

impl Eq for FileType

1.0.0 · Source§

impl Eq for Permissions

1.33.0 · Source§

impl Eq for PhantomPinned

Source§

impl Eq for Assume

1.0.0 · Source§

impl Eq for AddrParseError

1.0.0 · Source§

impl Eq for Ipv4Addr

1.0.0 · Source§

impl Eq for Ipv6Addr

1.0.0 · Source§

impl Eq for SocketAddrV4

1.0.0 · Source§

impl Eq for SocketAddrV6

1.0.0 · Source§

impl Eq for ParseFloatError

1.0.0 · Source§

impl Eq for ParseIntError

1.34.0 · Source§

impl Eq for TryFromIntError

1.0.0 · Source§

impl Eq for RangeFull

Source§

impl Eq for UCred

1.0.0 · Source§

impl Eq for Components<'_>

1.0.0 · Source§

impl Eq for Path

1.0.0 · Source§

impl Eq for PathBuf

1.7.0 · Source§

impl Eq for StripPrefixError

1.0.0 · Source§

impl Eq for ExitStatus

Source§

impl Eq for ExitStatusError

1.0.0 · Source§

impl Eq for Output

Source§

impl Eq for cs431_homework::test::loom::ptr::Alignment

1.0.0 · Source§

impl Eq for ParseBoolError

1.0.0 · Source§

impl Eq for Utf8Error

1.0.0 · Source§

impl Eq for FromUtf8Error

1.0.0 · Source§

impl Eq for String

1.0.0 · Source§

impl Eq for cs431_homework::test::loom::sync::mpmc::RecvError

1.5.0 · Source§

impl Eq for WaitTimeoutResult

1.26.0 · Source§

impl Eq for AccessError

1.19.0 · Source§

impl Eq for ThreadId

1.3.0 · Source§

impl Eq for Duration

1.8.0 · Source§

impl Eq for Instant

1.8.0 · Source§

impl Eq for SystemTime

1.66.0 · Source§

impl Eq for TryFromFloatSecsError

Source§

impl Eq for vec128_storage

Source§

impl Eq for vec256_storage

Source§

impl Eq for vec512_storage

§

impl Eq for BigEndian

§

impl Eq for LittleEndian

1.0.0 · Source§

impl<'a> Eq for Component<'a>

1.0.0 · Source§

impl<'a> Eq for Prefix<'a>

Source§

impl<'a> Eq for Utf8Pattern<'a>

Source§

impl<'a> Eq for PhantomContravariantLifetime<'a>

Source§

impl<'a> Eq for PhantomCovariantLifetime<'a>

Source§

impl<'a> Eq for PhantomInvariantLifetime<'a>

1.10.0 · Source§

impl<'a> Eq for Location<'a>

1.0.0 · Source§

impl<'a> Eq for PrefixComponent<'a>

1.79.0 · Source§

impl<'a> Eq for Utf8Chunk<'a>

Source§

impl<'h> Eq for regex::regex::bytes::Match<'h>

Source§

impl<'h> Eq for regex::regex::string::Match<'h>

Source§

impl<'r, R> Eq for UnwrapMut<'r, R>
where R: Eq + TryRngCore + ?Sized,

1.0.0 · Source§

impl<A> Eq for &A
where A: Eq + ?Sized,

1.0.0 · Source§

impl<A> Eq for &mut A
where A: Eq + ?Sized,

Source§

impl<A, S, V> Eq for ConvertError<A, S, V>
where A: Eq, S: Eq, V: Eq,

1.0.0 · Source§

impl<B> Eq for Cow<'_, B>
where B: Eq + ToOwned + ?Sized,

1.55.0 · Source§

impl<B, C> Eq for ControlFlow<B, C>
where B: Eq, C: Eq,

Source§

impl<Dyn> Eq for DynMetadata<Dyn>
where Dyn: ?Sized,

1.4.0 · Source§

impl<F> Eq for F
where F: FnPtr,

1.29.0 · Source§

impl<H> Eq for BuildHasherDefault<H>

1.0.0 · Source§

impl<Idx> Eq for cs431_homework::test::loom::ops::Range<Idx>
where Idx: Eq,

1.0.0 · Source§

impl<Idx> Eq for cs431_homework::test::loom::ops::RangeFrom<Idx>
where Idx: Eq,

1.26.0 · Source§

impl<Idx> Eq for cs431_homework::test::loom::ops::RangeInclusive<Idx>
where Idx: Eq,

1.0.0 · Source§

impl<Idx> Eq for RangeTo<Idx>
where Idx: Eq,

1.26.0 · Source§

impl<Idx> Eq for RangeToInclusive<Idx>
where Idx: Eq,

Source§

impl<Idx> Eq for cs431_homework::test::loom::range::Range<Idx>
where Idx: Eq,

Source§

impl<Idx> Eq for cs431_homework::test::loom::range::RangeFrom<Idx>
where Idx: Eq,

Source§

impl<Idx> Eq for cs431_homework::test::loom::range::RangeInclusive<Idx>
where Idx: Eq,

1.0.0 · Source§

impl<K, V, A> Eq for BTreeMap<K, V, A>
where K: Eq, V: Eq, A: Allocator + Clone,

1.0.0 · Source§

impl<K, V, S> Eq for HashMap<K, V, S>
where K: Eq + Hash, V: Eq, S: BuildHasher,

Source§

impl<O> Eq for zerocopy::byteorder::F32<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::F32<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::F64<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::F64<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::I16<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::I16<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::I32<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::I32<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::I64<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::I64<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::I128<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::I128<O>
where O: Eq,

Source§

impl<O> Eq for Isize<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::U16<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::U16<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::U32<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::U32<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::U64<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::U64<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::U128<O>
where O: Eq,

Source§

impl<O> Eq for zerocopy::byteorder::U128<O>
where O: Eq,

Source§

impl<O> Eq for Usize<O>
where O: Eq,

1.41.0 · Source§

impl<Ptr> Eq for Pin<Ptr>
where Ptr: Deref, <Ptr as Deref>::Target: Eq,

Source§

impl<R> Eq for UnwrapErr<R>
where R: Eq + TryRngCore,

Source§

impl<Src, Dst> Eq for AlignmentError<Src, Dst>
where Src: Eq, Dst: Eq + ?Sized,

Source§

impl<Src, Dst> Eq for SizeError<Src, Dst>
where Src: Eq, Dst: Eq + ?Sized,

Source§

impl<Src, Dst> Eq for ValidityError<Src, Dst>
where Src: Eq, Dst: Eq + TryFromBytes + ?Sized,

Source§

impl<T> Eq for crossbeam_channel::err::SendTimeoutError<T>
where T: Eq,

Source§

impl<T> Eq for crossbeam_channel::err::TrySendError<T>
where T: Eq,

1.17.0 · Source§

impl<T> Eq for Bound<T>
where T: Eq,

1.0.0 · Source§

impl<T> Eq for Option<T>
where T: Eq,

Source§

impl<T> Eq for cs431_homework::test::loom::sync::mpmc::SendTimeoutError<T>
where T: Eq,

1.0.0 · Source§

impl<T> Eq for cs431_homework::test::loom::sync::mpmc::TrySendError<T>
where T: Eq,

1.36.0 · Source§

impl<T> Eq for Poll<T>
where T: Eq,

1.0.0 · Source§

impl<T> Eq for *const T
where T: ?Sized,

Pointer equality is an equivalence relation.

1.0.0 · Source§

impl<T> Eq for *mut T
where T: ?Sized,

Pointer equality is an equivalence relation.

1.0.0 · Source§

impl<T> Eq for [T]
where T: Eq,

1.0.0 · Source§

impl<T> Eq for (T₁, T₂, …, Tₙ)
where T: Eq + ?Sized,

This trait is implemented for tuples up to twelve items long.

Source§

impl<T> Eq for crossbeam_channel::err::SendError<T>
where T: Eq,

Source§

impl<T> Eq for Shared<'_, T>
where T: Pointable + ?Sized,

Source§

impl<T> Eq for CachePadded<T>
where T: Eq,

Source§

impl<T> Eq for zerocopy::wrappers::Unalign<T>
where T: Unaligned + Eq,

Source§

impl<T> Eq for zerocopy::wrappers::Unalign<T>
where T: Unaligned + Eq,

1.2.0 · Source§

impl<T> Eq for Cell<T>
where T: Eq + Copy,

1.70.0 · Source§

impl<T> Eq for OnceCell<T>
where T: Eq,

1.2.0 · Source§

impl<T> Eq for RefCell<T>
where T: Eq + ?Sized,

1.19.0 · Source§

impl<T> Eq for Reverse<T>
where T: Eq,

1.0.0 · Source§

impl<T> Eq for Cursor<T>
where T: Eq,

Source§

impl<T> Eq for PhantomContravariant<T>
where T: ?Sized,

Source§

impl<T> Eq for PhantomCovariant<T>
where T: ?Sized,

1.0.0 · Source§

impl<T> Eq for PhantomData<T>
where T: ?Sized,

Source§

impl<T> Eq for PhantomInvariant<T>
where T: ?Sized,

1.21.0 · Source§

impl<T> Eq for Discriminant<T>

1.20.0 · Source§

impl<T> Eq for ManuallyDrop<T>
where T: Eq + ?Sized,

1.28.0 · Source§

impl<T> Eq for NonZero<T>
where T: ZeroablePrimitive + Eq,

1.74.0 · Source§

impl<T> Eq for Saturating<T>
where T: Eq,

1.0.0 · Source§

impl<T> Eq for Wrapping<T>
where T: Eq,

1.25.0 · Source§

impl<T> Eq for NonNull<T>
where T: ?Sized,

1.0.0 · Source§

impl<T> Eq for cs431_homework::test::loom::sync::mpmc::SendError<T>
where T: Eq,

1.70.0 · Source§

impl<T> Eq for OnceLock<T>
where T: Eq,

1.0.0 · Source§

impl<T, A> Eq for Box<T, A>
where T: Eq + ?Sized, A: Allocator,

1.0.0 · Source§

impl<T, A> Eq for BTreeSet<T, A>
where T: Eq, A: Allocator + Clone,

1.0.0 · Source§

impl<T, A> Eq for cs431_homework::test::loom::collections::LinkedList<T, A>
where T: Eq, A: Allocator,

1.0.0 · Source§

impl<T, A> Eq for VecDeque<T, A>
where T: Eq, A: Allocator,

1.0.0 · Source§

impl<T, A> Eq for Rc<T, A>
where T: Eq + ?Sized, A: Allocator,

Source§

impl<T, A> Eq for UniqueRc<T, A>
where T: Eq + ?Sized, A: Allocator,

1.0.0 · Source§

impl<T, A> Eq for Arc<T, A>
where T: Eq + ?Sized, A: Allocator,

1.0.0 · Source§

impl<T, A> Eq for Vec<T, A>
where T: Eq, A: Allocator,

Source§

impl<T, B> Eq for zerocopy::ref::def::Ref<B, T>

Source§

impl<T, B> Eq for zerocopy::Ref<B, [T]>
where B: ByteSlice, T: FromBytes + Eq,

Source§

impl<T, B> Eq for zerocopy::Ref<B, T>
where B: ByteSlice, T: FromBytes + Eq,

1.0.0 · Source§

impl<T, E> Eq for Result<T, E>
where T: Eq, E: Eq,

1.0.0 · Source§

impl<T, S> Eq for HashSet<T, S>
where T: Eq + Hash, S: BuildHasher,

1.0.0 · Source§

impl<T, const N: usize> Eq for [T; N]
where T: Eq,

Source§

impl<T, const N: usize> Eq for Simd<T, N>

Source§

impl<T: Eq> Eq for cs431_homework::LinkedList<T>

Source§

impl<X> Eq for UniformInt<X>
where X: Eq,

Source§

impl<X> Eq for Uniform<X>
where X: Eq + SampleUniform, <X as SampleUniform>::Sampler: Eq,

Source§

impl<Y, R> Eq for CoroutineState<Y, R>
where Y: Eq, R: Eq,