pub trait StructuralPartialEq { }
🔬 This is a nightly-only experimental API. (structural_match)
Expand description

Required trait for constants used in pattern matches.

Any type that derives PartialEq automatically implements this trait, regardless of whether its type-parameters implement Eq.

If a const item contains some type that does not implement this trait, then that type either (1.) does not implement PartialEq (which means the constant will not provide that comparison method, which code generation assumes is available), or (2.) it implements its own version of PartialEq (which we assume does not conform to a structural-equality comparison).

In either of the two scenarios above, we reject usage of such a constant in a pattern match.

See also the structural match RFC, and issue 63438 which motivated migrating from attribute-based design to this trait.

Implementations on Foreign Types

impl StructuralPartialEq for Entry

Implementors

impl<'a, S: 'a + ToOwned + ?Sized> StructuralPartialEq for ANSIGenericString<'a, S> where
    <S as ToOwned>::Owned: Debug

impl<'a, S: 'a + ToOwned + ?Sized> StructuralPartialEq for ANSIGenericStrings<'a, S> where
    <S as ToOwned>::Owned: Debug,
    S: PartialEq

impl<R> StructuralPartialEq for BitIdx<R> where
    R: BitRegister

impl<R> StructuralPartialEq for BitIdxError<R> where
    R: BitRegister

impl<R> StructuralPartialEq for BitTail<R> where
    R: BitRegister

impl<R> StructuralPartialEq for BitPos<R> where
    R: BitRegister

impl<R> StructuralPartialEq for BitSel<R> where
    R: BitRegister

impl<R> StructuralPartialEq for BitMask<R> where
    R: BitRegister

impl<T> StructuralPartialEq for AddressError<T> where
    T: BitStore

impl<T> StructuralPartialEq for BitPtrError<T> where
    T: BitStore

impl<T> StructuralPartialEq for BitSpanError<T> where
    T: BitStore

impl<'a, O, T> StructuralPartialEq for IterOnes<'a, O, T> where
    O: BitOrder,
    T: BitStore

impl<'a, O, T> StructuralPartialEq for IterZeros<'a, O, T> where
    O: BitOrder,
    T: BitStore

impl<'a> StructuralPartialEq for Item<'a>

impl<L, R> StructuralPartialEq for Either<L, R>

impl<AccountId> StructuralPartialEq for RawOrigin<AccountId>

impl<Index, AccountData> StructuralPartialEq for AccountInfo<Index, AccountData>

impl<T, E> StructuralPartialEq for TryChunksError<T, E>

impl<'bases, Section, R> StructuralPartialEq for CieOrFde<'bases, Section, R> where
    R: Reader,
    Section: UnwindSection<R>, 

impl<R, Offset> StructuralPartialEq for CommonInformationEntry<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<'bases, Section, R> StructuralPartialEq for PartialFrameDescriptionEntry<'bases, Section, R> where
    R: Reader,
    Section: UnwindSection<R>, 

impl<R, Offset> StructuralPartialEq for FrameDescriptionEntry<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<'input, Endian> StructuralPartialEq for EndianSlice<'input, Endian> where
    Endian: Endianity

impl<R, Offset> StructuralPartialEq for ArangeHeader<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for LineInstruction<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for LineProgramHeader<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for IncompleteLineProgram<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for CompleteLineProgram<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for FileEntry<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for Operation<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for Location<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for Piece<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<Offset> StructuralPartialEq for UnitType<Offset> where
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for UnitHeader<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<R, Offset> StructuralPartialEq for AttributeValue<R, Offset> where
    R: Reader<Offset = Offset>,
    Offset: ReaderOffset

impl<'a> StructuralPartialEq for Metadata<'a>

impl<T: Scalar> StructuralPartialEq for X<T>

impl<T: Scalar> StructuralPartialEq for XY<T>

impl<T: Scalar> StructuralPartialEq for XYZ<T>

impl<const R: usize> StructuralPartialEq for Const<R>

impl<T, const R: usize, const C: usize> StructuralPartialEq for ArrayStorage<T, R, C>

impl<T, R: Dim, C: Dim> StructuralPartialEq for VecStorage<T, R, C>

impl<Section> StructuralPartialEq for SymbolFlags<Section>

impl<'data> StructuralPartialEq for Bytes<'data>

impl<'data> StructuralPartialEq for SymbolMapName<'data>

impl<'data> StructuralPartialEq for ObjectMapEntry<'data>

impl<'data> StructuralPartialEq for Import<'data>

impl<'data> StructuralPartialEq for Export<'data>

impl<'data> StructuralPartialEq for CodeView<'data>

impl<'data> StructuralPartialEq for CompressedData<'data>

impl<Balance> StructuralPartialEq for BalanceLock<Balance>

impl<ReserveIdentifier, Balance> StructuralPartialEq for ReserveData<ReserveIdentifier, Balance>

impl<Balance> StructuralPartialEq for AccountData<Balance>

impl<T: Config<I>, I: 'static> StructuralPartialEq for PositiveImbalance<T, I>

impl<T: Config<I>, I: 'static> StructuralPartialEq for NegativeImbalance<T, I>

impl<Balance> StructuralPartialEq for BalanceLock<Balance>

impl<ReserveIdentifier, Balance> StructuralPartialEq for ReserveData<ReserveIdentifier, Balance>

impl<Balance> StructuralPartialEq for AccountData<Balance>

impl<T: Config<I>, I: 'static> StructuralPartialEq for PositiveImbalance<T, I>

impl<T: Config<I>, I: 'static> StructuralPartialEq for NegativeImbalance<T, I>

impl<Balance, BlockNumber> StructuralPartialEq for EscrowedAmount<Balance, BlockNumber>

impl<Balance> StructuralPartialEq for InclusionFee<Balance>

impl<Balance> StructuralPartialEq for FeeDetails<Balance>

impl<Balance> StructuralPartialEq for RuntimeDispatchInfo<Balance>

impl<'t> StructuralPartialEq for Match<'t>

impl<'t> StructuralPartialEq for Match<'t>

impl<Block: BlockT> StructuralPartialEq for BlockId<Block>

impl<Header, Extrinsic: MaybeSerialize> StructuralPartialEq for Block<Header, Extrinsic>

impl<Block> StructuralPartialEq for SignedBlock<Block>

impl<AccountId, Call, Extra> StructuralPartialEq for CheckedExtrinsic<AccountId, Call, Extra>

impl<Number: Copy + Into<U256> + TryFrom<U256>, Hash: HashT> StructuralPartialEq for Header<Number, Hash>

impl<Address, Call, Signature, Extra> StructuralPartialEq for UncheckedExtrinsic<Address, Call, Signature, Extra> where
    Extra: SignedExtension

impl<AccountId, AccountIndex> StructuralPartialEq for MultiAddress<AccountId, AccountIndex>

impl<'a, T> StructuralPartialEq for Request<'a, T>

impl<Xt> StructuralPartialEq for Block<Xt>

impl<Call, Extra> StructuralPartialEq for TestXt<Call, Extra>

impl<Info> StructuralPartialEq for DispatchErrorWithPostInfo<Info> where
    Info: Eq + PartialEq + Clone + Copy + Encode + Decode + Printable

impl<Reporter, Offender> StructuralPartialEq for OffenceDetails<Reporter, Offender>

impl<D> StructuralPartialEq for Data<D>

impl<Hash> StructuralPartialEq for TxKeysT<Hash>

impl<AccountId> StructuralPartialEq for OrderHeader<AccountId>

impl<Hash> StructuralPartialEq for OrderItem<Hash>

impl<Hash> StructuralPartialEq for TxKeysL<Hash>

impl<Hash> StructuralPartialEq for TxKeysM<Hash>

impl<Hash> StructuralPartialEq for TxKeysS<Hash>

impl<AccountId, ProjectStatus> StructuralPartialEq for DeletedProject<AccountId, ProjectStatus>

impl<AccountId, ReferenceHash, NumberOfBlocks, LockStatus, StatusOfTimeRecord, ReasonCodeStruct, PostingPeriod, StartOrEndBlockNumber, NumberOfBreaks> StructuralPartialEq for Timekeeper<AccountId, ReferenceHash, NumberOfBlocks, LockStatus, StatusOfTimeRecord, ReasonCodeStruct, PostingPeriod, StartOrEndBlockNumber, NumberOfBreaks>

impl<A, B> StructuralPartialEq for EitherWriter<A, B>

impl<M, F> StructuralPartialEq for WithFilter<M, F>

impl<A, B> StructuralPartialEq for OrElse<A, B>

impl<A, B> StructuralPartialEq for Tee<A, B>

impl<'a> StructuralPartialEq for Node<'a>

impl<HO, CE> StructuralPartialEq for Error<HO, CE>

impl<HO> StructuralPartialEq for Record<HO>

impl<T, E> StructuralPartialEq for TrieError<T, E>

impl<U, B> StructuralPartialEq for UInt<U, B>

impl<V, A> StructuralPartialEq for TArr<V, A>