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

Required trait for constants used in pattern matches.

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

This is a hack to work around a limitation in our type system.

Background

We want to require that types of consts used in pattern matches have the attribute #[derive(PartialEq, Eq)].

In a more ideal world, we could check that requirement by just checking that the given type implements both the StructuralPartialEq trait and the Eq trait. However, you can have ADTs that do derive(PartialEq, Eq), and be a case that we want the compiler to accept, and yet the constant’s type fails to implement Eq.

Namely, a case like this:

#[derive(PartialEq, Eq)]
struct Wrap<X>(X);

fn higher_order(_: &()) { }

const CFN: Wrap<fn(&())> = Wrap(higher_order);

fn main() {
    match CFN {
        CFN => {}
        _ => {}
    }
}

(The problem in the above code is that Wrap<fn(&())> does not implement PartialEq, nor Eq, because for<'a> fn(&'a _) does not implement those traits.)

Therefore, we cannot rely on naive check for StructuralPartialEq and mere Eq.

As a hack to work around this, we use two separate traits injected by each of the two derives (#[derive(PartialEq)] and #[derive(Eq)]) and check that both of them are present as part of structural-match checking.

Implementors§

1.0.0 · source§

impl StructuralEq for sp_std::cmp::Ordering

1.28.0 · source§

impl StructuralEq for sp_std::fmt::Alignment

1.0.0 · source§

impl StructuralEq for FpCategory

1.55.0 · source§

impl StructuralEq for IntErrorKind

source§

impl StructuralEq for SearchStep

1.0.0 · source§

impl StructuralEq for sp_std::sync::atomic::Ordering

1.12.0 · source§

impl StructuralEq for RecvTimeoutError

1.0.0 · source§

impl StructuralEq for TryRecvError

source§

impl StructuralEq for TryReserveErrorKind

source§

impl StructuralEq for AsciiChar

source§

impl StructuralEq for Which

1.7.0 · source§

impl StructuralEq for IpAddr

source§

impl StructuralEq for Ipv6MulticastScope

1.0.0 · source§

impl StructuralEq for SocketAddr

1.65.0 · source§

impl StructuralEq for BacktraceStatus

1.0.0 · source§

impl StructuralEq for VarError

1.0.0 · source§

impl StructuralEq for SeekFrom

1.0.0 · source§

impl StructuralEq for ErrorKind

1.0.0 · source§

impl StructuralEq for Shutdown

source§

impl StructuralEq for BacktraceStyle

source§

impl StructuralEq for bool

source§

impl StructuralEq for char

source§

impl StructuralEq for i8

source§

impl StructuralEq for i16

source§

impl StructuralEq for i32

source§

impl StructuralEq for i64

source§

impl StructuralEq for i128

source§

impl StructuralEq for isize

source§

impl StructuralEq for str

source§

impl StructuralEq for u8

source§

impl StructuralEq for u16

source§

impl StructuralEq for u32

source§

impl StructuralEq for u64

source§

impl StructuralEq for u128

source§

impl StructuralEq for ()

source§

impl StructuralEq for usize

source§

impl StructuralEq for AllocError

1.28.0 · source§

impl StructuralEq for Layout

1.50.0 · source§

impl StructuralEq for LayoutError

1.0.0 · source§

impl StructuralEq for TypeId

1.0.0 · source§

impl StructuralEq for Error

source§

impl StructuralEq for Assume

1.34.0 · source§

impl StructuralEq for NonZeroI8

1.34.0 · source§

impl StructuralEq for NonZeroI16

1.34.0 · source§

impl StructuralEq for NonZeroI32

1.34.0 · source§

impl StructuralEq for NonZeroI64

1.34.0 · source§

impl StructuralEq for NonZeroI128

1.34.0 · source§

impl StructuralEq for NonZeroIsize

1.28.0 · source§

impl StructuralEq for NonZeroU8

1.28.0 · source§

impl StructuralEq for NonZeroU16

1.28.0 · source§

impl StructuralEq for NonZeroU32

1.28.0 · source§

impl StructuralEq for NonZeroU64

1.28.0 · source§

impl StructuralEq for NonZeroU128

1.28.0 · source§

impl StructuralEq for NonZeroUsize

1.0.0 · source§

impl StructuralEq for ParseFloatError

1.0.0 · source§

impl StructuralEq for ParseIntError

1.34.0 · source§

impl StructuralEq for TryFromIntError

1.0.0 · source§

impl StructuralEq for RangeFull

source§

impl StructuralEq for sp_std::ptr::Alignment

1.0.0 · source§

impl StructuralEq for ParseBoolError

1.0.0 · source§

impl StructuralEq for Utf8Error

1.0.0 · source§

impl StructuralEq for RecvError

1.5.0 · source§

impl StructuralEq for WaitTimeoutResult

1.3.0 · source§

impl StructuralEq for Duration

1.66.0 · source§

impl StructuralEq for TryFromFloatSecsError

1.57.0 · source§

impl StructuralEq for TryReserveError

1.64.0 · source§

impl StructuralEq for CString

1.64.0 · source§

impl StructuralEq for FromVecWithNulError

1.64.0 · source§

impl StructuralEq for IntoStringError

1.64.0 · source§

impl StructuralEq for NulError

1.0.0 · source§

impl StructuralEq for FromUtf8Error

1.0.0 · source§

impl StructuralEq for String

1.34.0 · source§

impl StructuralEq for CharTryFromError

1.20.0 · source§

impl StructuralEq for ParseCharError

1.9.0 · source§

impl StructuralEq for DecodeUtf16Error

1.59.0 · source§

impl StructuralEq for TryFromCharError

1.69.0 · source§

impl StructuralEq for FromBytesUntilNulError

1.64.0 · source§

impl StructuralEq for FromBytesWithNulError

1.0.0 · source§

impl StructuralEq for Ipv4Addr

1.0.0 · source§

impl StructuralEq for Ipv6Addr

1.0.0 · source§

impl StructuralEq for AddrParseError

1.0.0 · source§

impl StructuralEq for SocketAddrV4

1.0.0 · source§

impl StructuralEq for SocketAddrV6

1.1.0 · source§

impl StructuralEq for FileType

1.0.0 · source§

impl StructuralEq for Permissions

source§

impl StructuralEq for UCred

1.7.0 · source§

impl StructuralEq for StripPrefixError

1.0.0 · source§

impl StructuralEq for ExitStatus

source§

impl StructuralEq for ExitStatusError

1.0.0 · source§

impl StructuralEq for Output

1.26.0 · source§

impl StructuralEq for AccessError

1.19.0 · source§

impl StructuralEq for ThreadId

1.8.0 · source§

impl StructuralEq for Instant

1.8.0 · source§

impl StructuralEq for SystemTime

1.33.0 · source§

impl StructuralEq for PhantomPinned

1.0.0 · source§

impl<'a> StructuralEq for Component<'a>

1.0.0 · source§

impl<'a> StructuralEq for Prefix<'a>

source§

impl<'a> StructuralEq for Utf8Chunk<'a>

1.10.0 · source§

impl<'a> StructuralEq for Location<'a>

1.0.0 · source§

impl<'a> StructuralEq for PrefixComponent<'a>

1.55.0 · source§

impl<B, C> StructuralEq for ControlFlow<B, C>

1.0.0 · source§

impl<Idx> StructuralEq for Range<Idx>

1.0.0 · source§

impl<Idx> StructuralEq for RangeFrom<Idx>

1.26.0 · source§

impl<Idx> StructuralEq for RangeInclusive<Idx>

1.0.0 · source§

impl<Idx> StructuralEq for RangeTo<Idx>

1.26.0 · source§

impl<Idx> StructuralEq for RangeToInclusive<Idx>

1.17.0 · source§

impl<T> StructuralEq for Bound<T>

1.0.0 · source§

impl<T> StructuralEq for TrySendError<T>

1.0.0 · source§

impl<T> StructuralEq for Option<T>

1.36.0 · source§

impl<T> StructuralEq for Poll<T>

source§

impl<T> StructuralEq for &Twhere T: ?Sized,

source§

impl<T> StructuralEq for [T]

source§

impl<T> StructuralEq for (T₁, T₂, …, Tₙ)

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

1.19.0 · source§

impl<T> StructuralEq for Reverse<T>

1.20.0 · source§

impl<T> StructuralEq for ManuallyDrop<T>where T: ?Sized,

source§

impl<T> StructuralEq for Saturating<T>

1.0.0 · source§

impl<T> StructuralEq for Wrapping<T>

1.0.0 · source§

impl<T> StructuralEq for SendError<T>

1.0.0 · source§

impl<T> StructuralEq for Cursor<T>

source§

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

1.0.0 · source§

impl<T, E> StructuralEq for Result<T, E>

source§

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

source§

impl<Y, R> StructuralEq for GeneratorState<Y, R>

impl<'a> StructuralEq for HexDisplay<'a>

impl<'a, H> StructuralEq for Leaf<'a, H>

impl<H, L> StructuralEq for MerkleProof<H, L>

impl<R> StructuralEq for BitIdx<R>where R: BitRegister,

impl<R> StructuralEq for BitEnd<R>where R: BitRegister,

impl<T> StructuralEq for BitSpanError<T>where T: BitStore,

impl<R> StructuralEq for BitMask<R>where R: BitRegister,

impl<R> StructuralEq for BitIdxError<R>where R: BitRegister,

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

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

impl<T> StructuralEq for BitPtrError<T>where T: BitStore,

impl<R> StructuralEq for BitSel<R>where R: BitRegister,

impl<R> StructuralEq for BitPos<R>where R: BitRegister,

impl<T, const L: usize, const U: usize> StructuralEq for BoundedVec<T, L, U>

impl StructuralEq for Env

impl<'a> StructuralEq for Token<'a>

impl StructuralEq for Os

impl StructuralEq for Utc

impl<T> StructuralEq for LocalResult<T>

impl StructuralEq for Pad

impl<'a> StructuralEq for Item<'a>

impl<const S: usize> StructuralEq for Cid<S>

impl StructuralEq for Id

impl StructuralEq for Str

impl<T> StructuralEq for Resettable<T>

impl<'s> StructuralEq for ParsedArg<'s>

impl<T> StructuralEq for Cursor<T>

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

impl<T> StructuralEq for SendError<T>

impl<T> StructuralEq for TrySendError<T>

impl<T> StructuralEq for Steal<T>

impl<T> StructuralEq for CachePadded<T>

impl<T: Zero> StructuralEq for NonZero<T>

impl<T> StructuralEq for Wrapping<T>

impl<'a> StructuralEq for BitStringRef<'a>

impl<T, const N: usize> StructuralEq for SequenceOf<T, N>

impl<T, const N: usize> StructuralEq for SetOf<T, N>where T: DerOrd,

impl<'a> StructuralEq for Ia5StringRef<'a>

impl<'a> StructuralEq for AnyRef<'a>

impl<'a> StructuralEq for OctetStringRef<'a>

impl StructuralEq for Any

impl<T> StructuralEq for SetOfVec<T>where T: DerOrd,

impl<'a> StructuralEq for Utf8StringRef<'a>

impl<'a, T> StructuralEq for ContextSpecificRef<'a, T>

impl<'a> StructuralEq for UIntRef<'a>

impl StructuralEq for Tag

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

impl<T, N> StructuralEq for BitFlags<T, N>

impl StructuralEq for Rng

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<VoterIndex, TargetIndex, P: PerThing> StructuralEq for IndexAssignment<VoterIndex, TargetIndex, P>

impl<BlockNumber> StructuralEq for DispatchTime<BlockNumber>

impl<T> StructuralEq for Bounded<T>

impl<T, Hash> StructuralEq for MaybeHashed<T, Hash>

impl<AccountId> StructuralEq for AttributeNamespace<AccountId>

impl<AccountId> StructuralEq for RawOrigin<AccountId>

impl<A: AssetId, B: Balance, OnDrop: HandleImbalanceDrop<A, B>, OppositeOnDrop: HandleImbalanceDrop<A, B>> StructuralEq for Imbalance<A, B, OnDrop, OppositeOnDrop>

impl<B: Balance, OnDrop: HandleImbalanceDrop<B>, OppositeOnDrop: HandleImbalanceDrop<B>> StructuralEq for Imbalance<B, OnDrop, OppositeOnDrop>

impl<Balance> StructuralEq for WithdrawConsequence<Balance>

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

impl<E: Parameter + Member, T> StructuralEq for EventRecord<E, T>

impl<T> StructuralEq for TrySendError<T>

impl<T> StructuralEq for AssertAsync<T>

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

impl<T> StructuralEq for AllowStdIo<T>

impl<R: Reader> StructuralEq for Attribute<R>

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

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

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

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

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

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

impl<Offset> StructuralEq for UnitType<Offset>where Offset: ReaderOffset,

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

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

impl<T> StructuralEq for DieReference<T>

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

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

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

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

impl<R: Reader> StructuralEq for CfaRule<R>

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

impl<T> StructuralEq for UnitOffset<T>

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

impl<R: Reader> StructuralEq for EhFrame<R>

impl<'a> StructuralEq for Header<'a>

impl<'headers, 'buf> StructuralEq for Request<'headers, 'buf>

impl<'headers, 'buf> StructuralEq for Response<'headers, 'buf>

impl<T> StructuralEq for Status<T>

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

impl<T> StructuralEq for FoldWhile<T>

impl StructuralEq for Set

impl StructuralEq for Map

impl<T> StructuralEq for Mismatch<T>

impl<'a> StructuralEq for Id<'a>

impl<'a> StructuralEq for InvalidRequest<'a>

impl<'a> StructuralEq for SubscriptionId<'a>

impl StructuralEq for tms

impl StructuralEq for tm

impl StructuralEq for Key

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

impl<TKey> StructuralEq for InsertResult<TKey>

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

impl<TConnectionUpgrade, TOutboundOpenInfo, TCustom, TErr> StructuralEq for ConnectionHandlerEvent<TConnectionUpgrade, TOutboundOpenInfo, TCustom, TErr>

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

impl<'a> StructuralEq for Metadata<'a>

impl<'a> StructuralEq for MetadataBuilder<'a>

impl<BlockHash> StructuralEq for LeavesProof<BlockHash>

impl<'a> StructuralEq for Protocol<'a>

impl<const S: usize> StructuralEq for Multihash<S>

impl<T: Scalar> StructuralEq for XYZWAB<T>

impl<T: Scalar> StructuralEq for XYZW<T>

impl<T: Scalar> StructuralEq for M3x4<T>

impl<T: Scalar> StructuralEq for M5x3<T>

impl<T: Scalar> StructuralEq for M2x5<T>

impl<T: Scalar> StructuralEq for M6x2<T>

impl<T: Scalar> StructuralEq for M4x6<T>

impl<T: Scalar> StructuralEq for M5x4<T>

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

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

impl<T: Scalar> StructuralEq for M3x6<T>

impl<T: Scalar> StructuralEq for M3x2<T>

impl<T: Scalar> StructuralEq for M5x2<T>

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

impl<T: Scalar> StructuralEq for M6x6<T>

impl<T: Scalar> StructuralEq for M4x4<T>

impl<T: Scalar> StructuralEq for M2x2<T>

impl<T: Scalar> StructuralEq for M6x4<T>

impl<T: Scalar> StructuralEq for M2x3<T>

impl<T: Scalar> StructuralEq for IJKW<T>

impl<T: Scalar> StructuralEq for XYZWA<T>

impl<T: Scalar> StructuralEq for M5x5<T>

impl<T: Scalar> StructuralEq for M6x5<T>

impl<T: Scalar> StructuralEq for M4x5<T>

impl<T: Scalar> StructuralEq for M3x3<T>

impl<T: Scalar> StructuralEq for M4x2<T>

impl<T: Scalar> StructuralEq for M2x6<T>

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

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

impl<T: Scalar> StructuralEq for M5x6<T>

impl<T: Scalar> StructuralEq for M6x3<T>

impl<T: Scalar> StructuralEq for M3x5<T>

impl<T: Scalar> StructuralEq for M4x3<T>

impl<T: Scalar> StructuralEq for M2x4<T>

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

impl<I> StructuralEq for Located<I>

impl<I, S> StructuralEq for Stateful<I, S>

impl<I> StructuralEq for Streaming<I>

impl<T> StructuralEq for Complex<T>

impl<'a> StructuralEq for MinusSignStr<'a>

impl<'a> StructuralEq for DecimalStr<'a>

impl<'a> StructuralEq for NanStr<'a>

impl<'a> StructuralEq for PlusSignStr<'a>

impl<'a> StructuralEq for SeparatorStr<'a>

impl<'a> StructuralEq for InfinityStr<'a>

impl<A> StructuralEq for ExtendedGcd<A>

impl<E: Endian> StructuralEq for U64Bytes<E>

impl<E: Endian> StructuralEq for U16Bytes<E>

impl<E: Endian> StructuralEq for I16Bytes<E>

impl<'data> StructuralEq for Bytes<'data>

impl<E: Endian> StructuralEq for I64Bytes<E>

impl<E: Endian> StructuralEq for U32Bytes<E>

impl<'data> StructuralEq for Import<'data>

impl<E: Endian> StructuralEq for I32Bytes<E>

impl<Section> StructuralEq for SymbolFlags<Section>

impl<'data> StructuralEq for CompressedData<'data>

impl<'data> StructuralEq for Export<'data>

impl<'data> StructuralEq for ObjectMapEntry<'data>

impl<'data> StructuralEq for SymbolMapName<'data>

impl<'data> StructuralEq for CodeView<'data>

impl<Balance> StructuralEq for BalanceLock<Balance>

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

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

impl<Balance> StructuralEq for AccountData<Balance>

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

impl<AccountId, BlockNumber> StructuralEq for BountyStatus<AccountId, BlockNumber>

impl<AccountId, Balance, BlockNumber> StructuralEq for Bounty<AccountId, Balance, BlockNumber>

impl<AccountId, BlockNumber> StructuralEq for ChildBountyStatus<AccountId, BlockNumber>

impl<AccountId, Balance, BlockNumber> StructuralEq for ChildBounty<AccountId, Balance, BlockNumber>

impl<AccountId, Balance> StructuralEq for CandidateInfo<AccountId, Balance>

impl<AccountId, BlockNumber> StructuralEq for Votes<AccountId, BlockNumber>

impl<AccountId, I> StructuralEq for RawOrigin<AccountId, I>

impl<Balance, BlockNumber, PollIndex, MaxVotes> StructuralEq for Casting<Balance, BlockNumber, PollIndex, MaxVotes>where MaxVotes: Get<u32>,

impl<Balance> StructuralEq for Delegations<Balance>

impl<Balance, AccountId, BlockNumber> StructuralEq for Delegating<Balance, AccountId, BlockNumber>

impl<Balance> StructuralEq for AccountVote<Balance>

impl<Balance, AccountId, BlockNumber, PollIndex, MaxVotes> StructuralEq for Voting<Balance, AccountId, BlockNumber, PollIndex, MaxVotes>where MaxVotes: Get<u32>,

impl<Balance> StructuralEq for AccountVote<Balance>

impl<Balance> StructuralEq for Delegations<Balance>

impl<BlockNumber, Proposal, Balance> StructuralEq for ReferendumInfo<BlockNumber, Proposal, Balance>

impl<Balance> StructuralEq for Tally<Balance>

impl<BlockNumber, Proposal, Balance> StructuralEq for ReferendumStatus<BlockNumber, Proposal, Balance>

impl<Balance, AccountId, BlockNumber, MaxVotes: Get<u32>> StructuralEq for Voting<Balance, AccountId, BlockNumber, MaxVotes>

impl<Bn> StructuralEq for Phase<Bn>

impl<S> StructuralEq for RawSolution<S>

impl<AccountId, Balance: HasCompact, Solution> StructuralEq for SignedSubmission<AccountId, Balance, Solution>

impl<T> StructuralEq for Error<T>

impl<FieldLimit: Get<u32>> StructuralEq for IdentityInfo<FieldLimit>

impl<Balance: Encode + Decode + Clone + Debug + Eq + PartialEq, AccountId: Encode + Decode + Clone + Debug + Eq + PartialEq> StructuralEq for RegistrarInfo<Balance, AccountId>

impl<Balance: Encode + Decode + MaxEncodedLen + Copy + Clone + Debug + Eq + PartialEq> StructuralEq for Judgement<Balance>

impl<Balance: Encode + Decode + MaxEncodedLen + Copy + Clone + Debug + Eq + PartialEq, MaxJudgements: Get<u32>, MaxAdditionalFields: Get<u32>> StructuralEq for Registration<Balance, MaxJudgements, MaxAdditionalFields>

impl<Offender> StructuralEq for UnresponsivenessOffence<Offender>

impl<PeerIdEncodingLimit, MultiAddrEncodingLimit, AddressesLimit> StructuralEq for BoundedOpaqueNetworkState<PeerIdEncodingLimit, MultiAddrEncodingLimit, AddressesLimit>where PeerIdEncodingLimit: Get<u32>, MultiAddrEncodingLimit: Get<u32>, AddressesLimit: Get<u32>,

impl<BlockNumber> StructuralEq for Heartbeat<BlockNumber>where BlockNumber: PartialEq + Eq + Decode + Encode,

impl<T> StructuralEq for Error<T>

impl<BlockNumber> StructuralEq for Timepoint<BlockNumber>

impl<BlockNumber, Balance, AccountId, MaxApprovals> StructuralEq for Multisig<BlockNumber, Balance, AccountId, MaxApprovals>where MaxApprovals: Get<u32>,

impl<AccountId, BlockNumber> StructuralEq for ReceiptRecord<AccountId, BlockNumber>

impl<BlockNumber> StructuralEq for SummaryRecord<BlockNumber>

impl<Balance, AccountId> StructuralEq for Bid<Balance, AccountId>

impl<Balance> StructuralEq for BondExtra<Balance>

impl<AccountId, Balance> StructuralEq for RequestStatus<AccountId, Balance>

impl<AccountId, ProxyType, BlockNumber> StructuralEq for ProxyDefinition<AccountId, ProxyType, BlockNumber>

impl<AccountId, Hash, BlockNumber> StructuralEq for Announcement<AccountId, Hash, BlockNumber>

impl<BlockNumber, Balance, Friends> StructuralEq for ActiveRecovery<BlockNumber, Balance, Friends>

impl<BlockNumber, Balance, Friends> StructuralEq for RecoveryConfig<BlockNumber, Balance, Friends>

impl<AccountId, Balance> StructuralEq for Deposit<AccountId, Balance>

impl<TrackId: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, RuntimeOrigin: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, Moment: Parameter + Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone + EncodeLike, Call: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, Balance: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, Tally: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, AccountId: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, ScheduleAddress: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone> StructuralEq for ReferendumStatus<TrackId, RuntimeOrigin, Moment, Call, Balance, Tally, AccountId, ScheduleAddress>

impl<TrackId: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, RuntimeOrigin: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, Moment: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone + EncodeLike, Call: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, Balance: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, Tally: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, AccountId: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, ScheduleAddress: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone> StructuralEq for ReferendumInfo<TrackId, RuntimeOrigin, Moment, Call, Balance, Tally, AccountId, ScheduleAddress>

impl<TrackId: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, RuntimeOrigin: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, Moment: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone + EncodeLike, Call: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, Balance: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, Tally: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, AccountId: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone, ScheduleAddress: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone> StructuralEq for ReferendumInfo<TrackId, RuntimeOrigin, Moment, Call, Balance, Tally, AccountId, ScheduleAddress>

impl<BlockNumber> StructuralEq for DecidingStatus<BlockNumber>

impl<Name, Call, BlockNumber, PalletsOrigin, AccountId> StructuralEq for Scheduled<Name, Call, BlockNumber, PalletsOrigin, AccountId>

impl<AccountId, Balance> StructuralEq for BidKind<AccountId, Balance>

impl<Balance, BlockNumber> StructuralEq for Payout<Balance, BlockNumber>

impl<AccountId, Balance> StructuralEq for Bid<AccountId, Balance>

impl<AccountId, Balance: HasCompact> StructuralEq for Exposure<AccountId, Balance>

impl<AccountId, Balance: HasCompact> StructuralEq for IndividualExposure<AccountId, Balance>

impl<AccountId> StructuralEq for RewardDestination<AccountId>

impl<Balance: HasCompact + MaxEncodedLen> StructuralEq for UnlockChunk<Balance>

impl<AccountId: Parameter, Balance: Parameter, BlockNumber: Parameter, Hash: Parameter> StructuralEq for OpenTip<AccountId, Balance, BlockNumber, Hash>

impl<Balance> StructuralEq for InclusionFee<Balance>

impl<Balance, Weight> StructuralEq for RuntimeDispatchInfo<Balance, Weight>

impl<Balance> StructuralEq for FeeDetails<Balance>

impl<AccountId, Balance> StructuralEq for Proposal<AccountId, Balance>

impl<Balance, BlockNumber> StructuralEq for VestingInfo<Balance, BlockNumber>

impl<BlockNumber> StructuralEq for QueryStatus<BlockNumber>

impl<Key, Value> StructuralEq for Operation<Key, Value>

impl<T> StructuralEq for Compact<T>

impl<'a, T> StructuralEq for CompactRef<'a, T>

impl<R> StructuralEq for Error<R>

impl<R> StructuralEq for ErrorVariant<R>

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

impl<'i> StructuralEq for ParserNode<'i>

impl<'i> StructuralEq for ParserExpr<'i>

impl<'i> StructuralEq for ParserRule<'i>

impl<N, E> StructuralEq for Element<N, E>

impl<'a, E, Ix: IndexType> StructuralEq for EdgeReference<'a, E, Ix>

impl<Ix> StructuralEq for NodeIndex<Ix>

impl<Ix> StructuralEq for EdgeIndex<Ix>where Ix: IndexType,

impl<Ix> StructuralEq for EdgeIndex<Ix>

impl<V1> StructuralEq for Versioned<V1>

impl StructuralEq for PoV

impl StructuralEq for Id

impl<Payload, RealPayload> StructuralEq for Signed<Payload, RealPayload>

impl<H, N> StructuralEq for FullCandidateReceipt<H, N>

impl<Payload, RealPayload> StructuralEq for UncheckedSigned<Payload, RealPayload>

impl<AccountId, Balance, BlockNumber, LeasePeriod> StructuralEq for FundInfo<AccountId, Balance, BlockNumber, LeasePeriod>

impl<BlockNumber> StructuralEq for LastContribution<BlockNumber>

impl<Balance> StructuralEq for AccountStatus<Balance>

impl<AccountId, LeasePeriod> StructuralEq for ParachainTemporarySlot<AccountId, LeasePeriod>

impl<Account, Balance> StructuralEq for ParaInfo<Account, Balance>

impl<KeyOwnerIdentification> StructuralEq for SlashingOffence<KeyOwnerIdentification>

impl<Candidate, Signature> StructuralEq for MultipleCandidates<Candidate, Signature>

impl<Candidate, Digest> StructuralEq for Statement<Candidate, Digest>

impl<Candidate, Digest, AuthorityId, Signature> StructuralEq for UnauthorizedStatement<Candidate, Digest, AuthorityId, Signature>

impl<Digest, Group> StructuralEq for Summary<Digest, Group>

impl<Candidate, Digest, AuthorityId, Signature> StructuralEq for SignedStatement<Candidate, Digest, AuthorityId, Signature>

impl<Candidate, Digest, AuthorityId, Signature> StructuralEq for Misbehavior<Candidate, Digest, AuthorityId, Signature>

impl<Candidate, Digest, Signature> StructuralEq for ValidityDoubleVote<Candidate, Digest, Signature>

impl<Candidate, Digest, Signature> StructuralEq for DoubleSign<Candidate, Digest, Signature>

impl<T> StructuralEq for InPredicate<T>where T: PartialEq + Debug,

impl<F, T> StructuralEq for FnPredicate<F, T>where F: Fn(&T) -> bool, T: ?Sized,

impl<T> StructuralEq for HashableInPredicate<T>where T: Hash + Eq + Debug,

impl<P> StructuralEq for TrimPredicate<P>where P: Predicate<str>,

impl<T> StructuralEq for EqPredicate<T>

impl<P> StructuralEq for Utf8Predicate<P>where P: Predicate<str>,

impl<T> StructuralEq for OrdPredicate<T>

impl<M, Item> StructuralEq for NotPredicate<M, Item>where M: Predicate<Item>, Item: ?Sized,

impl<M1, M2, Item> StructuralEq for AndPredicate<M1, M2, Item>where M1: Predicate<Item>, M2: Predicate<Item>, Item: ?Sized,

impl<M, Item> StructuralEq for NamePredicate<M, Item>where M: Predicate<Item>, Item: ?Sized,

impl<T> StructuralEq for OrdInPredicate<T>where T: Ord + Debug,

impl<P> StructuralEq for FileContentPredicate<P>where P: Predicate<[u8]>,

impl<M1, M2, Item> StructuralEq for OrPredicate<M1, M2, Item>where M1: Predicate<Item>, M2: Predicate<Item>, Item: ?Sized,

impl<A> StructuralEq for Action<A>

impl<'t> StructuralEq for Match<'t>

impl<'t> StructuralEq for Match<'t>

impl StructuralEq for Hir

impl StructuralEq for Ast

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

impl<Block: BlockT> StructuralEq for BlockCheckParams<Block>

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

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

impl<Block: BlockT> StructuralEq for GrandpaJustification<Block>

impl<Block: BlockT> StructuralEq for WarpSyncPhase<Block>

impl<Hash, Number> StructuralEq for FromBlock<Hash, Number>

impl<Block: BlockT> StructuralEq for WarpSyncProgress<Block>

impl<Hash, Number> StructuralEq for BlockRequest<Hash, Number>

impl<Header, Hash, Extrinsic> StructuralEq for BlockResponse<Header, Hash, Extrinsic>

impl<Block: BlockT> StructuralEq for OnBlockJustification<Block>

impl<Header, Hash, Extrinsic> StructuralEq for BlockData<Header, Hash, Extrinsic>

impl<Block: BlockT> StructuralEq for OnBlockData<Block>

impl<BlockNumber> StructuralEq for SyncState<BlockNumber>

impl<B: BlockT> StructuralEq for BlockData<B>

impl<E> StructuralEq for Error<E>

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

impl<T: Form> StructuralEq for Type<T>

impl<T: Form> StructuralEq for Variant<T>

impl<T: Form> StructuralEq for TypeDef<T>

impl<T: Form> StructuralEq for Path<T>

impl<'a, T> StructuralEq for Symbol<'a, T>

impl<T: Form> StructuralEq for Field<T>

impl<T> StructuralEq for Interner<T>

impl<K> StructuralEq for ExtendedKey<K>

impl StructuralEq for Tag

impl<'a, Size: ModulusSize> StructuralEq for Coordinates<'a, Size>

impl<'buf> StructuralEq for AllPreallocated<'buf>

impl StructuralEq for All

impl<'buf> StructuralEq for SignOnlyPreallocated<'buf>

impl<N> StructuralEq for AutoBoolSimd<N>

impl<N> StructuralEq for AutoSimd<N>

impl<'a> StructuralEq for Param<'a>

impl<'a> StructuralEq for Incoming<'a>

impl<TBlockNumber, TSignature> StructuralEq for SignedCommitment<TBlockNumber, TSignature>

impl<MerkleRoot> StructuralEq for BeefyAuthoritySet<MerkleRoot>

impl<TBlockNumber, TMerkleRoot> StructuralEq for SignedCommitmentWitness<TBlockNumber, TMerkleRoot>

impl<TBlockNumber> StructuralEq for Commitment<TBlockNumber>

impl<BlockNumber, Hash, MerkleRoot, ExtraData> StructuralEq for MmrLeaf<BlockNumber, Hash, MerkleRoot, ExtraData>

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

impl<Header: HeaderT> StructuralEq for GrandpaJustification<Header>

impl<Hash> StructuralEq for Proof<Hash>

impl<AccountId> StructuralEq for StakedAssignment<AccountId>

impl<AccountId, P: PerThing> StructuralEq for Assignment<AccountId, P>

impl<AccountId> StructuralEq for Support<AccountId>

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

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

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

impl<Xt> StructuralEq for Block<Xt>

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

impl<T, E> StructuralEq for MutateStorageError<T, E>

impl<'a> StructuralEq for PiecewiseLinear<'a>

impl StructuralEq for Era

impl<Block> StructuralEq for SignedBlock<Block>

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

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

impl<'a> StructuralEq for DigestItemRef<'a>

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

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

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

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

impl<Hash> StructuralEq for StorageChangeSet<Hash>

impl<H> StructuralEq for Error<H>

impl<D> StructuralEq for Data<D>

impl<'a> StructuralEq for BindingInfo<'a>

impl<'a> StructuralEq for VariantAst<'a>

impl<'a> StructuralEq for VariantInfo<'a>

impl<'a> StructuralEq for Structure<'a>

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

impl StructuralEq for Tm

impl<T> StructuralEq for SetError<T>

impl<T> StructuralEq for TrySendError<T>

impl<'k> StructuralEq for KeyMut<'k>

impl<T> StructuralEq for Formatted<T>

impl StructuralEq for Id

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

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

impl<M> StructuralEq for WithMinLevel<M>

impl<M> StructuralEq for WithMaxLevel<M>

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

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

impl<HO> StructuralEq for Record<HO>

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

impl<'a> StructuralEq for Node<'a>

impl<L: TrieLayout> StructuralEq for Value<L>

impl<D: Borrow<[u8]>> StructuralEq for OwnedNode<D>

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

impl<'a> StructuralEq for Value<'a>

impl<H> StructuralEq for ValueOwned<H>

impl<'a> StructuralEq for NodeHandle<'a>

impl<H> StructuralEq for NodeOwned<H>

impl StructuralEq for TXT

impl StructuralEq for SRV

impl StructuralEq for SOA

impl StructuralEq for MX

impl<T> StructuralEq for IpHint<T>

impl StructuralEq for OPT

impl StructuralEq for CAA

impl StructuralEq for B1

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

impl StructuralEq for B0

impl<U: Unsigned + NonZero> StructuralEq for PInt<U>

impl<U: Unsigned + NonZero> StructuralEq for NInt<U>

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

impl StructuralEq for Z0

impl<'a> StructuralEq for Input<'a>

impl<S> StructuralEq for Host<S>

impl<T> StructuralEq for Clamped<T>

impl<'a> StructuralEq for SectionCode<'a>

impl<'a> StructuralEq for VariantCase<'a>

impl StructuralEq for Tag

impl<Inner> StructuralEq for Frozen<Inner>where Inner: Mutability,

impl StructuralEq for Mut