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

Implementors

impl<T, A, B> StructuralPartialEq for AnagolayRecord<T, A, B>

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<const S: usize> StructuralPartialEq for Cid<S>

impl<Reg> StructuralPartialEq for UnwindCode<Reg>

impl<Reg> StructuralPartialEq for UnwindInfo<Reg>

impl<K, V> StructuralPartialEq for PrimaryMap<K, V> where
    K: EntityRef

impl<T> StructuralPartialEq for Steal<T>

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

impl<H, N> StructuralPartialEq for State<H, N>

impl<Id: Eq + Ord> StructuralPartialEq for VoterSet<Id>

impl<H, N, S, Id> StructuralPartialEq for CommunicationOut<H, N, S, Id>

impl<Id: Eq + Hash> StructuralPartialEq for RoundState<Id>

impl<Id: Eq + Hash> StructuralPartialEq for VoterState<Id>

impl<H, N> StructuralPartialEq for Prevote<H, N>

impl<H, N> StructuralPartialEq for Precommit<H, N>

impl<H, N> StructuralPartialEq for PrimaryPropose<H, N>

impl<Id, V, S> StructuralPartialEq for Equivocation<Id, V, S>

impl<H, N> StructuralPartialEq for Message<H, N>

impl<H, N, S, Id> StructuralPartialEq for SignedMessage<H, N, S, Id>

impl<H, N, S, Id> StructuralPartialEq for Commit<H, N, S, Id>

impl<H, N, S, Id> StructuralPartialEq for SignedPrevote<H, N, S, Id>

impl<H, N, S, Id> StructuralPartialEq for SignedPrecommit<H, N, S, Id>

impl<H, N, S, Id> StructuralPartialEq for CompactCommit<H, N, S, Id>

impl<H, N, S, Id> StructuralPartialEq for CatchUp<H, N, S, Id>

impl<H, N, S, Id> StructuralPartialEq for HistoricalVotes<H, N, S, Id>

impl<E> StructuralPartialEq for Error<E>

impl<H, N, V> StructuralPartialEq for ForkTree<H, N, V>

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<'headers, 'buf: 'headers> StructuralPartialEq for Request<'headers, 'buf>

impl<'headers, 'buf: 'headers> StructuralPartialEq for Response<'headers, 'buf>

impl<'a> StructuralPartialEq for Header<'a>

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

impl<TOutboundOpenInfo, TCustom> StructuralPartialEq for ConnectionHandlerEvent<TOutboundOpenInfo, TCustom>

impl<TDialInfo> StructuralPartialEq for SubstreamEndpoint<TDialInfo>

impl<TUpgr, TErr> StructuralPartialEq for ListenerEvent<TUpgr, TErr>

impl<TKey, TVal> StructuralPartialEq for Node<TKey, TVal>

impl<TKey> StructuralPartialEq for InsertResult<TKey>

impl<TKey, TVal> StructuralPartialEq for AppliedPending<TKey, TVal>

impl<TUpgrade, TInfo> StructuralPartialEq for SubstreamProtocol<TUpgrade, TInfo>

impl<TConnectionUpgrade, TOutboundOpenInfo, TCustom, TErr> StructuralPartialEq for ProtocolsHandlerEvent<TConnectionUpgrade, TOutboundOpenInfo, TCustom, TErr>

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<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<AccountId> StructuralPartialEq for RawEvent<AccountId>

impl<Balance> StructuralPartialEq for InclusionFee<Balance>

impl<Balance> StructuralPartialEq for FeeDetails<Balance>

impl<Balance> StructuralPartialEq for RuntimeDispatchInfo<Balance>

impl<'a> StructuralPartialEq for Protocol<'a>

impl<R> StructuralPartialEq for Error<R>

impl<'i, R> StructuralPartialEq for Token<'i, R>

impl<R: WritableBase> StructuralPartialEq for Writable<R>

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

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

impl<BlockNumber: Ord, T: Group> StructuralPartialEq for Forks<BlockNumber, T>

impl<Header: HeaderT> StructuralPartialEq for RemoteCallRequest<Header>

impl<Header: HeaderT> StructuralPartialEq for RemoteReadRequest<Header>

impl<Header: HeaderT> StructuralPartialEq for ChangesProof<Header>

impl<Header: HeaderT> StructuralPartialEq for RemoteBodyRequest<Header>

impl<H, N> StructuralPartialEq for LeafSet<H, N>

impl<Hash, Number> StructuralPartialEq for EpochIdentifier<Hash, Number>

impl<Hash, Number, E: Epoch> StructuralPartialEq for ViableEpochDescriptor<Hash, Number, E>

impl<H, N> StructuralPartialEq for AuthoritySet<H, N>

impl<Header: HeaderT> StructuralPartialEq for FinalityProof<Header>

impl<Hash> StructuralPartialEq for ReadProof<Hash>

impl<Hash, Number> StructuralPartialEq for PeerInfo<Hash, Number>

impl<Number> StructuralPartialEq for SyncState<Number>

impl<Hash, Ex> StructuralPartialEq for Imported<Hash, Ex>

impl<Hash, Extrinsic> StructuralPartialEq for Transaction<Hash, Extrinsic>

impl<'a> StructuralPartialEq for Incoming<'a>

impl<'a> StructuralPartialEq for Param<'a>

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

impl<Header, Id> StructuralPartialEq for EquivocationProof<Header, Id>

impl<Number, Hash> StructuralPartialEq for ChangesTrieConfigurationRange<Number, Hash>

impl<H, N> StructuralPartialEq for Equivocation<H, N>

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

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<Block: BlockT> StructuralPartialEq for BlockId<Block>

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

impl<Block> StructuralPartialEq for SignedBlock<Block>

impl<Hash> StructuralPartialEq for Digest<Hash>

impl<Hash> StructuralPartialEq for DigestItem<Hash>

impl<'a, Hash: 'a> StructuralPartialEq for DigestItemRef<'a, Hash>

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

impl<Xt> StructuralPartialEq for Block<Xt>

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

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

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

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

impl<H, N> StructuralPartialEq for CacheAction<H, N>

impl<Hash, BlockHash> StructuralPartialEq for TransactionStatus<Hash, BlockHash>

impl<D> StructuralPartialEq for Data<D>

impl<'a, 'b> StructuralPartialEq for Builder<'a, 'b>

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>

impl<'text> StructuralPartialEq for InitialInfo<'text>

impl<'text> StructuralPartialEq for BidiInfo<'text>

impl<'a> StructuralPartialEq for ValType<'a>

impl<'a> StructuralPartialEq for HeapType<'a>

impl<'a> StructuralPartialEq for RefType<'a>

impl<'a> StructuralPartialEq for Token<'a>

impl<'a> StructuralPartialEq for Integer<'a>

impl<'a> StructuralPartialEq for Float<'a>

impl<'a> StructuralPartialEq for FloatVal<'a>