pub trait Eq: PartialEq { }
๐Ÿ”ฌThis is a nightly-only experimental API. (prelude_2024)
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 {}

Object Safetyยง

This trait is not object safe.

Implementorsยง

sourceยง

impl Eq for ConstOp

sourceยง

impl Eq for EngineOrModuleTypeIndex

sourceยง

impl Eq for EntityIndex

sourceยง

impl Eq for Trap

sourceยง

impl Eq for VMGcKind

sourceยง

impl Eq for WasmCompositeType

sourceยง

impl Eq for WasmHeapTopType

sourceยง

impl Eq for WasmHeapType

sourceยง

impl Eq for WasmStorageType

sourceยง

impl Eq for WasmValType

sourceยง

impl Eq for LibCall

sourceยง

impl Eq for BlockType

sourceยง

impl Eq for CanonicalOption

sourceยง

impl Eq for ComdatSymbolKind

sourceยง

impl Eq for ComponentExternalKind

sourceยง

impl Eq for ComponentOuterAliasKind

sourceยง

impl Eq for ComponentTypeRef

sourceยง

impl Eq for ComponentValType

sourceยง

impl Eq for CompositeType

sourceยง

impl Eq for Encoding

sourceยง

impl Eq for ExternalKind

sourceยง

impl Eq for FrameKind

sourceยง

impl Eq for HeapType

sourceยง

impl Eq for InstantiationArgKind

sourceยง

impl Eq for wasmtime_environ::wasmparser::Ordering

sourceยง

impl Eq for OuterAliasKind

sourceยง

impl Eq for PrimitiveValType

sourceยง

impl Eq for RelocAddendKind

sourceยง

impl Eq for RelocationType

sourceยง

impl Eq for StorageType

sourceยง

impl Eq for TypeBounds

sourceยง

impl Eq for UnpackedIndex

sourceยง

impl Eq for ValType

sourceยง

impl Eq for ComponentNameKind<'_>

sourceยง

impl Eq for AnyTypeId

sourceยง

impl Eq for ComponentAnyTypeId

sourceยง

impl Eq for ComponentCoreTypeId

sourceยง

impl Eq for AsciiChar

1.0.0 ยท sourceยง

impl Eq for wasmtime_environ::__core::cmp::Ordering

1.34.0 ยท sourceยง

impl Eq for Infallible

1.28.0 ยท sourceยง

impl Eq for wasmtime_environ::__core::fmt::Alignment

1.7.0 ยท sourceยง

impl Eq for IpAddr

sourceยง

impl Eq for Ipv6MulticastScope

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 SearchStep

1.0.0 ยท sourceยง

impl Eq for wasmtime_environ::__core::sync::atomic::Ordering

sourceยง

impl Eq for TryReserveErrorKind

sourceยง

impl Eq for hashbrown::TryReserveError

sourceยง

impl Eq for AddressSize

sourceยง

impl Eq for object::common::Architecture

sourceยง

impl Eq for object::common::BinaryFormat

sourceยง

impl Eq for ComdatKind

sourceยง

impl Eq for FileFlags

sourceยง

impl Eq for RelocationEncoding

sourceยง

impl Eq for RelocationFlags

sourceยง

impl Eq for RelocationKind

sourceยง

impl Eq for SectionFlags

sourceยง

impl Eq for SectionKind

sourceยง

impl Eq for object::common::SegmentFlags

sourceยง

impl Eq for SubArchitecture

sourceยง

impl Eq for SymbolKind

sourceยง

impl Eq for SymbolScope

sourceยง

impl Eq for object::endian::Endianness

sourceยง

impl Eq for CompressionFormat

sourceยง

impl Eq for FileKind

sourceยง

impl Eq for ObjectKind

sourceยง

impl Eq for RelocationTarget

sourceยง

impl Eq for SymbolSection

sourceยง

impl Eq for Op

sourceยง

impl Eq for CDataModel

sourceยง

impl Eq for Size

sourceยง

impl Eq for ParseError

sourceยง

impl Eq for Aarch64Architecture

sourceยง

impl Eq for target_lexicon::targets::Architecture

sourceยง

impl Eq for ArmArchitecture

sourceยง

impl Eq for target_lexicon::targets::BinaryFormat

sourceยง

impl Eq for CustomVendor

sourceยง

impl Eq for Environment

sourceยง

impl Eq for Mips32Architecture

sourceยง

impl Eq for Mips64Architecture

sourceยง

impl Eq for OperatingSystem

sourceยง

impl Eq for Riscv32Architecture

sourceยง

impl Eq for Riscv64Architecture

sourceยง

impl Eq for Vendor

sourceยง

impl Eq for X86_32Architecture

sourceยง

impl Eq for CallingConvention

sourceยง

impl Eq for target_lexicon::triple::Endianness

sourceยง

impl Eq for PointerWidth

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

1.0.0 ยท sourceยง

impl Eq for String

sourceยง

impl Eq for BuiltinFunctionIndex

sourceยง

impl Eq for CallIndirectSiteIndex

sourceยง

impl Eq for ConstExpr

sourceยง

impl Eq for DataIndex

sourceยง

impl Eq for DefinedFuncIndex

sourceยง

impl Eq for DefinedGlobalIndex

sourceยง

impl Eq for DefinedMemoryIndex

sourceยง

impl Eq for DefinedTableIndex

sourceยง

impl Eq for ElemIndex

sourceยง

impl Eq for EngineInternedRecGroupIndex

sourceยง

impl Eq for FilePos

sourceยง

impl Eq for FuncIndex

sourceยง

impl Eq for FuncRefIndex

sourceยง

impl Eq for Global

sourceยง

impl Eq for GlobalIndex

sourceยง

impl Eq for InstructionAddressMap

sourceยง

impl Eq for Memory

sourceยง

impl Eq for MemoryIndex

sourceยง

impl Eq for ModuleInternedRecGroupIndex

sourceยง

impl Eq for ModuleInternedTypeIndex

sourceยง

impl Eq for OwnedMemoryIndex

sourceยง

impl Eq for RecGroupRelativeTypeIndex

sourceยง

impl Eq for StaticModuleIndex

sourceยง

impl Eq for Table

sourceยง

impl Eq for TableIndex

sourceยง

impl Eq for Tag

sourceยง

impl Eq for TagIndex

sourceยง

impl Eq for TrapInformation

sourceยง

impl Eq for TypeIndex

sourceยง

impl Eq for VMSharedTypeIndex

sourceยง

impl Eq for WasmArrayType

sourceยง

impl Eq for WasmFieldType

sourceยง

impl Eq for WasmFuncType

sourceยง

impl Eq for WasmRecGroup

sourceยง

impl Eq for WasmRefType

sourceยง

impl Eq for WasmStructType

sourceยง

impl Eq for WasmSubType

sourceยง

impl Eq for ComponentName

sourceยง

impl Eq for KebabStr

sourceยง

impl Eq for KebabString

sourceยง

impl Eq for ArrayType

sourceยง

impl Eq for FieldType

sourceยง

impl Eq for FuncType

sourceยง

impl Eq for GlobalType

sourceยง

impl Eq for Ieee32

sourceยง

impl Eq for Ieee64

sourceยง

impl Eq for MemoryType

sourceยง

impl Eq for PackedIndex

sourceยง

impl Eq for RecGroup

sourceยง

impl Eq for RefType

sourceยง

impl Eq for RelocationEntry

sourceยง

impl Eq for wasmtime_environ::wasmparser::SegmentFlags

sourceยง

impl Eq for StructType

sourceยง

impl Eq for SubType

sourceยง

impl Eq for wasmtime_environ::wasmparser::SymbolFlags

sourceยง

impl Eq for TableType

sourceยง

impl Eq for V128

sourceยง

impl Eq for ValidatorId

sourceยง

impl Eq for AliasableResourceId

sourceยง

impl Eq for ComponentCoreInstanceTypeId

sourceยง

impl Eq for ComponentCoreModuleTypeId

sourceยง

impl Eq for ComponentDefinedTypeId

sourceยง

impl Eq for ComponentFuncTypeId

sourceยง

impl Eq for ComponentInstanceTypeId

sourceยง

impl Eq for ComponentTypeId

sourceยง

impl Eq for ComponentValueTypeId

sourceยง

impl Eq for CoreTypeId

sourceยง

impl Eq for RecGroupId

sourceยง

impl Eq for ResourceId

sourceยง

impl Eq for 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

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

1.64.0 ยท sourceยง

impl Eq for CStr

1.69.0 ยท sourceยง

impl Eq for FromBytesUntilNulError

1.64.0 ยท sourceยง

impl Eq for FromBytesWithNulError

1.0.0 ยท sourceยง

impl Eq for wasmtime_environ::__core::fmt::Error

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

sourceยง

impl Eq for wasmtime_environ::__core::ptr::Alignment

1.0.0 ยท sourceยง

impl Eq for RangeFull

1.0.0 ยท sourceยง

impl Eq for ParseBoolError

1.0.0 ยท sourceยง

impl Eq for Utf8Error

1.3.0 ยท sourceยง

impl Eq for Duration

1.66.0 ยท sourceยง

impl Eq for TryFromFloatSecsError

sourceยง

impl Eq for UnorderedKeyError

1.57.0 ยท sourceยง

impl Eq for alloc::collections::TryReserveError

1.64.0 ยท sourceยง

impl Eq for CString

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 FromUtf8Error

sourceยง

impl Eq for indexmap::TryReserveError

sourceยง

impl Eq for BigEndian

sourceยง

impl Eq for LittleEndian

sourceยง

impl Eq for CompressedFileRange

sourceยง

impl Eq for object::read::Error

sourceยง

impl Eq for SectionIndex

sourceยง

impl Eq for SymbolIndex

sourceยง

impl Eq for BuildMetadata

sourceยง

impl Eq for Comparator

sourceยง

impl Eq for Prerelease

sourceยง

impl Eq for Version

sourceยง

impl Eq for VersionReq

sourceยง

impl Eq for DefaultToHost

sourceยง

impl Eq for DefaultToUnknown

sourceยง

impl Eq for Triple

sourceยง

impl<'a> Eq for FlagValue<'a>

sourceยง

impl<'a> Eq for ComponentDefinedType<'a>

sourceยง

impl<'a> Eq for DependencyName<'a>

sourceยง

impl<'a> Eq for HashName<'a>

sourceยง

impl<'a> Eq for InterfaceName<'a>

sourceยง

impl<'a> Eq for ResourceFunc<'a>

sourceยง

impl<'a> Eq for UrlName<'a>

sourceยง

impl<'a> Eq for VariantCase<'a>

1.10.0 ยท sourceยง

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

1.79.0 ยท sourceยง

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

sourceยง

impl<'data> Eq for CodeView<'data>

sourceยง

impl<'data> Eq for CompressedData<'data>

sourceยง

impl<'data> Eq for Export<'data>

sourceยง

impl<'data> Eq for Import<'data>

sourceยง

impl<'data> Eq for ObjectMapEntry<'data>

sourceยง

impl<'data> Eq for SymbolMapName<'data>

sourceยง

impl<'data> Eq for Bytes<'data>

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> Eq for SmallVec<A>
where A: Array, <A as Array>::Item: 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,

sourceยง

impl<E> Eq for I16<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for I32<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for I64<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for U16<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for U32<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for U64<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for I16Bytes<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for I32Bytes<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for I64Bytes<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for U16Bytes<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for U32Bytes<E>
where E: Eq + Endian,

sourceยง

impl<E> Eq for U64Bytes<E>
where E: Eq + Endian,

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 wasmtime_environ::__core::range::legacy::Range<Idx>
where Idx: Eq,

1.0.0 ยท sourceยง

impl<Idx> Eq for wasmtime_environ::__core::range::legacy::RangeFrom<Idx>
where Idx: Eq,

1.26.0 ยท sourceยง

impl<Idx> Eq for wasmtime_environ::__core::range::legacy::RangeInclusive<Idx>
where Idx: Eq,

sourceยง

impl<Idx> Eq for wasmtime_environ::__core::range::Range<Idx>
where Idx: Eq,

sourceยง

impl<Idx> Eq for wasmtime_environ::__core::range::RangeFrom<Idx>
where Idx: Eq,

sourceยง

impl<Idx> Eq for wasmtime_environ::__core::range::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<K, V> Eq for PrimaryMap<K, V>
where K: Eq + EntityRef, V: Eq,

sourceยง

impl<K, V> Eq for SecondaryMap<K, V>
where K: EntityRef, V: Clone + PartialEq + Eq,

sourceยง

impl<K, V> Eq for indexmap::map::slice::Slice<K, V>
where K: Eq, V: Eq,

1.0.0 ยท sourceยง

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

sourceยง

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

sourceยง

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

1.41.0 ยท sourceยง

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

sourceยง

impl<Section, Symbol> Eq for object::common::SymbolFlags<Section, Symbol>
where Section: Eq, Symbol: Eq,

1.0.0 ยท sourceยง

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

1.17.0 ยท sourceยง

impl<T> Eq for Bound<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,

1.0.0 ยท sourceยง

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

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 PackedOption<T>
where T: Eq + ReservedValue,

sourceยง

impl<T> Eq for EntityList<T>
where T: Eq + EntityRef + ReservedValue,

1.2.0 ยท sourceยง

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

1.70.0 ยท sourceยง

impl<T> Eq for wasmtime_environ::__core::cell::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 PhantomData<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,

sourceยง

impl<T> Eq for indexmap::set::slice::Slice<T>
where T: Eq,

sourceยง

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

sourceยง

impl<T> Eq for Unalign<T>
where T: Unaligned + 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 Vec<T, A>
where T: Eq, 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 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,

1.0.0 ยท sourceยง

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

sourceยง

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

sourceยง

impl<T, B> Eq for 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,

sourceยง

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

sourceยง

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

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<Y, R> Eq for CoroutineState<Y, R>
where Y: Eq, R: Eq,