pub trait EncodeLike<T: Encode = Self>: Sized + Encode { }
Expand description

A marker trait that tells the compiler that a type encode to the same representation as another type.

E.g. Vec<u8> has the same encoded representation as &[u8].

Example

fn encode_like<T: Encode, R: EncodeLike<T>>(data: &R) {
    data.encode(); // Valid `T` encoded value.
}

fn main() {
    // Just pass the a reference to the normal tuple.
    encode_like::<(u32, u32), _>(&(1u32, 2u32));
    // Pass a tuple of references
    encode_like::<(u32, u32), _>(&(&1u32, &2u32));
    // Pass a tuple of a reference and a value.
    encode_like::<(u32, u32), _>(&(&1u32, 2u32));
}

Warning

The relation is not symetric, T implements EncodeLike<U> does not mean U has same representation as T. For instance we could imaging a non zero integer to be encoded to the same representation as the said integer but not the other way around.

Limitation

Not all possible implementations of EncodeLike are implemented (for instance Box<Box<u32>> does not implement EncodeLike<u32>). To bypass this issue either open a PR to add the new combination or use Ref reference wrapper or define your own wrapper and implement EncodeLike on it as such:

fn encode_like<T: Encode, R: EncodeLike<T>>(data: &R) {
    data.encode(); // Valid `T` encoded value.
}

struct MyWrapper<'a>(&'a (Box<Box<u32>>, u32));
impl<'a> core::ops::Deref for MyWrapper<'a> { // Or use derive_deref crate
    type Target = (Box<Box<u32>>, u32);
    fn deref(&self) -> &Self::Target { &self.0 }
}

impl<'a> parity_scale_codec::WrapperTypeEncode for MyWrapper<'a> {}
impl<'a> parity_scale_codec::EncodeLike<(u32, u32)> for MyWrapper<'a> {}

fn main() {
    let v = (Box::new(Box::new(0)), 0);
    encode_like::<(u32, u32), _>(&MyWrapper(&v));
}

Implementations on Foreign Types§

Implementors§

impl EncodeLike<Call> for Call

impl<TBlockNumber> EncodeLike<Commitment<TBlockNumber>> for Commitment<TBlockNumber>where
    TBlockNumber: Encode,

impl<N, S> EncodeLike<VersionedFinalityProof<N, S>> for VersionedFinalityProof<N, S>where
    SignedCommitment<N, S>: Encode,

impl<BlockNumber, Hash, MerkleRoot, ExtraData> EncodeLike<MmrLeaf<BlockNumber, Hash, MerkleRoot, ExtraData>> for MmrLeaf<BlockNumber, Hash, MerkleRoot, ExtraData>where
    BlockNumber: Encode,
    Hash: Encode,
    (BlockNumber, Hash): Encode,
    BeefyNextAuthoritySet<MerkleRoot>: Encode,
    ExtraData: Encode,

impl<MerkleRoot> EncodeLike<BeefyAuthoritySet<MerkleRoot>> for BeefyAuthoritySet<MerkleRoot>where
    MerkleRoot: Encode,

impl<TBlockNumber, TMerkleRoot> EncodeLike<SignedCommitmentWitness<TBlockNumber, TMerkleRoot>> for SignedCommitmentWitness<TBlockNumber, TMerkleRoot>where
    Commitment<TBlockNumber>: Encode,
    TMerkleRoot: Encode,

impl<AuthorityId> EncodeLike<ValidatorSet<AuthorityId>> for ValidatorSet<AuthorityId>where
    Vec<AuthorityId>: Encode,

impl<AuthorityId: Codec> EncodeLike<ConsensusLog<AuthorityId>> for ConsensusLog<AuthorityId>where
    ValidatorSet<AuthorityId>: Encode,

impl<Number, Id, Signature> EncodeLike<VoteMessage<Number, Id, Signature>> for VoteMessage<Number, Id, Signature>where
    Commitment<Number>: Encode,
    Id: Encode,
    Signature: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::Hash: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    Option<T::Hash>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<B: BlockT> EncodeLike<ParachainBlockData<B>> for ParachainBlockData<B>where
    B::Header: Encode,
    Vec<B::Extrinsic>: Encode,

impl<H, N> EncodeLike<State<H, N>> for State<H, N>where
    Option<(H, N)>: Encode,

impl<H, N> EncodeLike<Prevote<H, N>> for Prevote<H, N>where
    H: Encode,
    N: Encode,

impl<H, N> EncodeLike<Precommit<H, N>> for Precommit<H, N>where
    H: Encode,
    N: Encode,

impl<H, N> EncodeLike<PrimaryPropose<H, N>> for PrimaryPropose<H, N>where
    H: Encode,
    N: Encode,

impl<Id, V, S> EncodeLike<Equivocation<Id, V, S>> for Equivocation<Id, V, S>where
    Id: Encode,
    V: Encode,
    S: Encode,
    (V, S): Encode,

impl<H, N> EncodeLike<Message<H, N>> for Message<H, N>where
    Prevote<H, N>: Encode,
    Precommit<H, N>: Encode,
    PrimaryPropose<H, N>: Encode,

impl<H, N, S, Id> EncodeLike<SignedMessage<H, N, S, Id>> for SignedMessage<H, N, S, Id>where
    Message<H, N>: Encode,
    S: Encode,
    Id: Encode,

impl<H, N, S, Id> EncodeLike<Commit<H, N, S, Id>> for Commit<H, N, S, Id>where
    H: Encode,
    N: Encode,
    Vec<SignedPrecommit<H, N, S, Id>>: Encode,

impl<H, N, S, Id> EncodeLike<SignedPrevote<H, N, S, Id>> for SignedPrevote<H, N, S, Id>where
    Prevote<H, N>: Encode,
    S: Encode,
    Id: Encode,

impl<H, N, S, Id> EncodeLike<SignedPrecommit<H, N, S, Id>> for SignedPrecommit<H, N, S, Id>where
    Precommit<H, N>: Encode,
    S: Encode,
    Id: Encode,

impl<H, N, S, Id> EncodeLike<CompactCommit<H, N, S, Id>> for CompactCommit<H, N, S, Id>where
    H: Encode,
    N: Encode,
    Vec<Precommit<H, N>>: Encode,
    MultiAuthData<S, Id>: Encode,

impl<H, N, S, Id> EncodeLike<CatchUp<H, N, S, Id>> for CatchUp<H, N, S, Id>where
    Vec<SignedPrevote<H, N, S, Id>>: Encode,
    Vec<SignedPrecommit<H, N, S, Id>>: Encode,
    H: Encode,
    N: Encode,

impl<H, N, S, Id> EncodeLike<HistoricalVotes<H, N, S, Id>> for HistoricalVotes<H, N, S, Id>where
    Vec<SignedMessage<H, N, S, Id>>: Encode,

impl<H, N, V> EncodeLike<ForkTree<H, N, V>> for ForkTree<H, N, V>where
    Vec<Node<H, N, V>>: Encode,
    Option<N>: Encode,

impl<VoterIndex, TargetIndex, P: PerThing> EncodeLike<IndexAssignment<VoterIndex, TargetIndex, P>> for IndexAssignment<VoterIndex, TargetIndex, P>where
    VoterIndex: Encode,
    Vec<(TargetIndex, P)>: Encode,

impl<T: Form> EncodeLike<SignedExtensionMetadata<T>> for SignedExtensionMetadata<T>where
    T::String: Encode,
    T::Type: Encode,

impl<T: Form> EncodeLike<StorageEntryMetadata<T>> for StorageEntryMetadata<T>where
    T::String: Encode,
    StorageEntryType<T>: Encode,
    Vec<T::String>: Encode,

impl<T: Form> EncodeLike<StorageEntryType<T>> for StorageEntryType<T>where
    T::Type: Encode,

impl<T: Form> EncodeLike<PalletCallMetadata<T>> for PalletCallMetadata<T>where
    T::Type: Encode,

impl<T: Form> EncodeLike<PalletEventMetadata<T>> for PalletEventMetadata<T>where
    T::Type: Encode,

impl<T: Form> EncodeLike<PalletConstantMetadata<T>> for PalletConstantMetadata<T>where
    T::String: Encode,
    T::Type: Encode,
    Vec<T::String>: Encode,

impl<T: Form> EncodeLike<PalletErrorMetadata<T>> for PalletErrorMetadata<T>where
    T::Type: Encode,

impl<AccountId> EncodeLike<RawOrigin<AccountId>> for RawOrigin<AccountId>where
    AccountId: Encode,

impl<BlockNumber> EncodeLike<DispatchTime<BlockNumber>> for DispatchTime<BlockNumber>where
    BlockNumber: Encode,

impl<T, Hash> EncodeLike<MaybeHashed<T, Hash>> for MaybeHashed<T, Hash>where
    T: Encode,
    Hash: Encode,

impl EncodeLike<Pays> for Pays

impl<Balance> EncodeLike<WeightToFeeCoefficient<Balance>> for WeightToFeeCoefficient<Balance>where
    Balance: Encode,

impl<T> EncodeLike<PerDispatchClass<T>> for PerDispatchClass<T>where
    T: Encode,

impl<T: Config + Send + Sync> EncodeLike<CheckGenesis<T>> for CheckGenesis<T>where
    PhantomData<T>: Encode,

impl<T: Config + Send + Sync> EncodeLike<CheckMortality<T>> for CheckMortality<T>where
    PhantomData<T>: Encode,

impl<T: Config> EncodeLike<CheckNonce<T>> for CheckNonce<T>where
    T::Index: HasCompact,

impl<T: Config + Send + Sync> EncodeLike<CheckSpecVersion<T>> for CheckSpecVersion<T>where
    PhantomData<T>: Encode,

impl<T: Config + Send + Sync> EncodeLike<CheckTxVersion<T>> for CheckTxVersion<T>where
    PhantomData<T>: Encode,

impl<T: Config + Send + Sync> EncodeLike<CheckWeight<T>> for CheckWeight<T>where
    PhantomData<T>: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    T::Hash: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<E, T> EncodeLike<EventRecord<E, T>> for EventRecord<E, T>where
    E: Encode + Parameter + Member,
    Vec<T>: Encode,

impl<Index, AccountData> EncodeLike<AccountInfo<Index, AccountData>> for AccountInfo<Index, AccountData>where
    Index: Encode,
    AccountData: Encode,

impl<AssetId> EncodeLike<PoolType<AssetId>> for PoolType<AssetId>where
    AssetId: Encode,

impl<Balance, BlockNumber, Price> EncodeLike<AggregatedEntry<Balance, BlockNumber, Price>> for AggregatedEntry<Balance, BlockNumber, Price>where
    Price: Encode,
    Volume<Balance>: Encode,
    Liquidity<Balance>: Encode,
    BlockNumber: Encode,

impl<Balance> EncodeLike<Volume<Balance>> for Volume<Balance>where
    Balance: Encode,

impl<Balance> EncodeLike<Liquidity<Balance>> for Liquidity<Balance>where
    Balance: Encode,

impl<AccountId, AssetId, AssetPair, Balance> EncodeLike<AMMTransfer<AccountId, AssetId, AssetPair, Balance>> for AMMTransfer<AccountId, AssetId, AssetPair, Balance>where
    AccountId: Encode,
    AssetPair: Encode,
    Balance: Encode,
    AssetId: Encode,
    (AssetId, Balance): Encode,

impl EncodeLike<Call> for Call

impl<Balance> EncodeLike<BalanceLock<Balance>> for BalanceLock<Balance>where
    Balance: Encode,

impl<ReserveIdentifier, Balance> EncodeLike<ReserveData<ReserveIdentifier, Balance>> for ReserveData<ReserveIdentifier, Balance>where
    ReserveIdentifier: Encode,
    Balance: Encode,

impl<Balance> EncodeLike<AccountData<Balance>> for AccountData<Balance>where
    Balance: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::CurrencyId: Encode,
    T::AccountId: Encode,
    T::Balance: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<Balance, CustomMetadata> EncodeLike<AssetMetadata<Balance, CustomMetadata>> for AssetMetadata<Balance, CustomMetadata>where
    Balance: Encode,
    CustomMetadata: Encode + Parameter + Member + TypeInfo,

impl<AccountId, Balance, BlockNumber> EncodeLike<AuctionInfo<AccountId, Balance, BlockNumber>> for AuctionInfo<AccountId, Balance, BlockNumber>where
    Option<(AccountId, Balance)>: Encode,
    BlockNumber: Encode,
    Option<BlockNumber>: Encode,

impl<Value> EncodeLike<Change<Value>> for Change<Value>where
    Value: Encode,

impl<Value, Moment> EncodeLike<TimestampedValue<Value, Moment>> for TimestampedValue<Value, Moment>where
    Value: Encode + Ord + PartialOrd,
    Moment: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Ord + Encode + Decode + MaxEncodedLen + Clone + Eq + PartialEq, S: Get<u32>> EncodeLike<OrderedSet<T, S>> for OrderedSet<T, S>where
    BoundedVec<T, S>: Encode,

impl<BlockNumber, Balance> EncodeLike<VestingSchedule<BlockNumber, Balance>> for VestingSchedule<BlockNumber, Balance>where
    BlockNumber: Encode,
    Balance: HasCompact + MaxEncodedLen + HasCompact,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    VestingSchedule<<T as Config>::BlockNumber, <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance>: Encode,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AssetId> EncodeLike<AssetType<AssetId>> for AssetType<AssetId>where
    AssetId: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AssetId: Encode,
    BoundedVec<u8, T::StringLimit>: Encode,
    AssetType<T::AssetId>: Encode,
    T::AssetNativeLocation: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config<I>, I: 'static> EncodeLike<Bag<T, I>> for Bag<T, I>where
    Option<T::AccountId>: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<Node<T, I>> for Node<T, I>where
    T::AccountId: Encode,
    Option<T::AccountId>: Encode,
    T::Score: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>where
    T::AccountId: Encode,
    T::Score: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>where
    T::AccountId: Encode,
    T::Balance: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<Balance> EncodeLike<BalanceLock<Balance>> for BalanceLock<Balance>where
    Balance: Encode,

impl<ReserveIdentifier, Balance> EncodeLike<ReserveData<ReserveIdentifier, Balance>> for ReserveData<ReserveIdentifier, Balance>where
    ReserveIdentifier: Encode,
    Balance: Encode,

impl<Balance> EncodeLike<AccountData<Balance>> for AccountData<Balance>where
    Balance: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, Balance, BlockNumber> EncodeLike<Bounty<AccountId, Balance, BlockNumber>> for Bounty<AccountId, Balance, BlockNumber>where
    AccountId: Encode,
    Balance: Encode,
    BountyStatus<AccountId, BlockNumber>: Encode,

impl<AccountId, BlockNumber> EncodeLike<BountyStatus<AccountId, BlockNumber>> for BountyStatus<AccountId, BlockNumber>where
    AccountId: Encode,
    BlockNumber: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>where
    BalanceOf<T, I>: Encode,
    T::AccountId: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<AccountId, Balance, BlockNumber> EncodeLike<ChildBounty<AccountId, Balance, BlockNumber>> for ChildBounty<AccountId, Balance, BlockNumber>where
    Balance: Encode,
    ChildBountyStatus<AccountId, BlockNumber>: Encode,

impl<AccountId, BlockNumber> EncodeLike<ChildBountyStatus<AccountId, BlockNumber>> for ChildBountyStatus<AccountId, BlockNumber>where
    AccountId: Encode,
    BlockNumber: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    BalanceOf<T>: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, Balance> EncodeLike<CandidateInfo<AccountId, Balance>> for CandidateInfo<AccountId, Balance>where
    AccountId: Encode,
    Balance: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    Vec<T::AccountId>: Encode,
    <<T as Config>::Currency as Currency<<T as SystemConfig>::AccountId>>::Balance: Encode,
    T::AccountId: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, I> EncodeLike<RawOrigin<AccountId, I>> for RawOrigin<AccountId, I>where
    AccountId: Encode,
    PhantomData<I>: Encode,

impl<AccountId, BlockNumber> EncodeLike<Votes<AccountId, BlockNumber>> for Votes<AccountId, BlockNumber>where
    Vec<AccountId>: Encode,
    BlockNumber: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>where
    T::AccountId: Encode,
    T::Hash: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::CurrencyId: Encode,
    T::AccountId: Encode,
    <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance: Encode,
    <<T as Config>::MultiCurrency as MultiCurrencyExtended<<T as Config>::AccountId>>::Amount: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<Balance> EncodeLike<Tally<Balance>> for Tally<Balance>where
    Balance: Encode,

impl<Balance> EncodeLike<Delegations<Balance>> for Delegations<Balance>where
    Balance: Encode,

impl<BlockNumber, Hash, Balance> EncodeLike<ReferendumStatus<BlockNumber, Hash, Balance>> for ReferendumStatus<BlockNumber, Hash, Balance>where
    BlockNumber: Encode,
    Hash: Encode,
    Tally<Balance>: Encode,

impl<BlockNumber, Hash, Balance> EncodeLike<ReferendumInfo<BlockNumber, Hash, Balance>> for ReferendumInfo<BlockNumber, Hash, Balance>where
    ReferendumStatus<BlockNumber, Hash, Balance>: Encode,
    BlockNumber: Encode,

impl EncodeLike<Vote> for Vote

impl<Balance> EncodeLike<AccountVote<Balance>> for AccountVote<Balance>where
    Balance: Encode,

impl<Balance, AccountId, BlockNumber> EncodeLike<Voting<Balance, AccountId, BlockNumber>> for Voting<Balance, AccountId, BlockNumber>where
    Vec<(ReferendumIndex, AccountVote<Balance>)>: Encode,
    Delegations<Balance>: Encode,
    PriorLock<BlockNumber, Balance>: Encode,
    Balance: Encode,
    AccountId: Encode,

impl<AccountId, Balance, BlockNumber> EncodeLike<PreimageStatus<AccountId, Balance, BlockNumber>> for PreimageStatus<AccountId, Balance, BlockNumber>where
    BlockNumber: Encode,
    AccountId: Encode,
    Balance: Encode,
    Option<BlockNumber>: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,
    Vec<T::AccountId>: Encode,
    T::AccountId: Encode,
    T::Hash: Encode,
    T::BlockNumber: Encode,
    AccountVote<<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    T::Balance: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, Balance, Solution> EncodeLike<SignedSubmission<AccountId, Balance, Solution>> for SignedSubmission<AccountId, Balance, Solution>where
    AccountId: Encode,
    Balance: Encode + HasCompact,
    RawSolution<Solution>: Encode,

impl<Bn> EncodeLike<Phase<Bn>> for Phase<Bn>where
    Bn: Encode,
    (bool, Bn): Encode,

impl<S> EncodeLike<RawSolution<S>> for RawSolution<S>where
    S: Encode,

impl<A> EncodeLike<ReadySolution<A>> for ReadySolution<A>where
    Supports<A>: Encode,

impl<T: Config> EncodeLike<RoundSnapshot<T>> for RoundSnapshot<T>where
    Vec<VoterOf<T>>: Encode,
    Vec<T::AccountId>: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    <T as Config>::AccountId: Encode,
    BalanceOf<T>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, Balance> EncodeLike<Voter<AccountId, Balance>> for Voter<AccountId, Balance>where
    Vec<AccountId>: Encode,
    Balance: Encode,

impl<AccountId, Balance> EncodeLike<SeatHolder<AccountId, Balance>> for SeatHolder<AccountId, Balance>where
    AccountId: Encode,
    Balance: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    Vec<(<T as Config>::AccountId, <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance)>: Encode,
    <T as Config>::AccountId: Encode,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<BlockNumber> EncodeLike<OracleEntry<BlockNumber>> for OracleEntry<BlockNumber>where
    BlockNumber: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<Balance, AccountId> EncodeLike<GiltBid<Balance, AccountId>> for GiltBid<Balance, AccountId>where
    Balance: Encode,
    AccountId: Encode,

impl<Balance, AccountId, BlockNumber> EncodeLike<ActiveGilt<Balance, AccountId, BlockNumber>> for ActiveGilt<Balance, AccountId, BlockNumber>where
    Balance: Encode,
    AccountId: Encode,
    BlockNumber: Encode,

impl<Balance> EncodeLike<ActiveGiltsTotal<Balance>> for ActiveGiltsTotal<Balance>where
    Balance: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,
    T::BlockNumber: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<N, Limit> EncodeLike<StoredPendingChange<N, Limit>> for StoredPendingChange<N, Limit>where
    N: Encode,
    BoundedAuthorityList<Limit>: Encode,
    Option<N>: Encode,

impl<N> EncodeLike<StoredState<N>> for StoredState<N>where
    N: Encode,

impl EncodeLike<Data> for Data

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

impl<FieldLimit: Get<u32>> EncodeLike<IdentityInfo<FieldLimit>> for IdentityInfo<FieldLimit>where
    BoundedVec<(Data, Data), FieldLimit>: Encode,

impl<Balance, MaxJudgements: Get<u32>, MaxAdditionalFields: Get<u32>> EncodeLike<Registration<Balance, MaxJudgements, MaxAdditionalFields>> for Registration<Balance, MaxJudgements, MaxAdditionalFields>where
    BoundedVec<(RegistrarIndex, Judgement<Balance>), MaxJudgements>: Encode,
    Balance: Encode + Encode + Decode + MaxEncodedLen + Copy + Clone + Debug + Eq + PartialEq,
    IdentityInfo<MaxAdditionalFields>: Encode,

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

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

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

impl<PeerIdEncodingLimit, MultiAddrEncodingLimit, AddressesLimit> EncodeLike<BoundedOpaqueNetworkState<PeerIdEncodingLimit, MultiAddrEncodingLimit, AddressesLimit>> for BoundedOpaqueNetworkState<PeerIdEncodingLimit, MultiAddrEncodingLimit, AddressesLimit>where
    PeerIdEncodingLimit: Get<u32>,
    MultiAddrEncodingLimit: Get<u32>,
    AddressesLimit: Get<u32>,
    WeakBoundedVec<u8, PeerIdEncodingLimit>: Encode,
    WeakBoundedVec<WeakBoundedVec<u8, MultiAddrEncodingLimit>, AddressesLimit>: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AuthorityId: Encode,
    Vec<IdentificationTuple<T>>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    T::AccountIndex: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, BlockNumber: AtLeast32BitUnsigned + Copy> EncodeLike<Pool<AccountId, BlockNumber>> for Pool<AccountId, BlockNumber>where
    AccountId: Encode,
    Option<BlockNumber>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    <T as Config>::AccountId: Encode,
    Pool<T::AccountId, T::BlockNumber>: Encode,
    T::AccountId: Encode,
    <<T as Config>::MultiCurrency as MultiCurrency<<T as Config>::AccountId>>::Balance: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config<I>, I: 'static> EncodeLike<GlobalFarmData<T, I>> for GlobalFarmData<T, I>where
    T::AccountId: Encode,
    <T as Config>::BlockNumber: Encode,
    T::AssetId: Encode,
    BlockNumberFor<T>: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<YieldFarmData<T, I>> for YieldFarmData<T, I>where
    <T as Config>::BlockNumber: Encode,
    PhantomData<I>: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<DepositData<T, I>> for DepositData<T, I>where
    T::AmmPoolId: Encode,
    BoundedVec<YieldFarmEntry<T, I>, T::MaxFarmEntriesPerDeposit>: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<YieldFarmEntry<T, I>> for YieldFarmEntry<T, I>where
    <T as Config>::BlockNumber: Encode,
    PhantomData<I>: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<AccountId, Balance, BlockNumber> EncodeLike<Offer<AccountId, Balance, BlockNumber>> for Offer<AccountId, Balance, BlockNumber>where
    AccountId: Encode,
    Balance: Encode,
    BlockNumber: Encode,

impl<AccountId> EncodeLike<Royalty<AccountId>> for Royalty<AccountId>where
    AccountId: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    T::NftCollectionId: Encode,
    T::NftItemId: Encode,
    Option<<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance>: Encode,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,
    T::BlockNumber: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>where
    PhantomData<(T::AccountId, <T as Config<I>>::Event)>: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<BlockNumber> EncodeLike<Timepoint<BlockNumber>> for Timepoint<BlockNumber>where
    BlockNumber: Encode,

impl<BlockNumber, Balance, AccountId> EncodeLike<Multisig<BlockNumber, Balance, AccountId>> for Multisig<BlockNumber, Balance, AccountId>where
    Timepoint<BlockNumber>: Encode,
    Balance: Encode,
    AccountId: Encode,
    Vec<AccountId>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    Timepoint<T::BlockNumber>: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<CollectionType, BoundedVec> EncodeLike<CollectionInfo<CollectionType, BoundedVec>> for CollectionInfo<CollectionType, BoundedVec>where
    CollectionType: Encode,
    BoundedVec: Encode,

impl<BoundedVec> EncodeLike<ItemInfo<BoundedVec>> for ItemInfo<BoundedVec>where
    BoundedVec: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    T::NftCollectionId: Encode,
    T::CollectionType: Encode,
    BoundedVecOfUnq<T>: Encode,
    T::NftItemId: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<ConfigOp<T>> for ConfigOp<T>where
    T: Encode + Codec + Debug,

impl<Balance> EncodeLike<BondExtra<Balance>> for BondExtra<Balance>where
    Balance: Encode,

impl<T: Config> EncodeLike<PoolMember<T>> for PoolMember<T>where
    BalanceOf<T>: Encode,
    T::RewardCounter: Encode,
    BoundedBTreeMap<EraIndex, BalanceOf<T>, T::MaxUnbonding>: Encode,

impl<AccountId> EncodeLike<PoolRoles<AccountId>> for PoolRoles<AccountId>where
    AccountId: Encode,
    Option<AccountId>: Encode,

impl<T: Config> EncodeLike<BondedPoolInner<T>> for BondedPoolInner<T>where
    BalanceOf<T>: Encode,
    PoolRoles<T::AccountId>: Encode,

impl<T: Config> EncodeLike<RewardPool<T>> for RewardPool<T>where
    T::RewardCounter: Encode,
    BalanceOf<T>: Encode,

impl<T: Config> EncodeLike<UnbondPool<T>> for UnbondPool<T>where
    BalanceOf<T>: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    BalanceOf<T>: Encode,
    Option<T::AccountId>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, Balance> EncodeLike<RequestStatus<AccountId, Balance>> for RequestStatus<AccountId, Balance>where
    Option<(AccountId, Balance)>: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::Hash: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, ProxyType, BlockNumber> EncodeLike<ProxyDefinition<AccountId, ProxyType, BlockNumber>> for ProxyDefinition<AccountId, ProxyType, BlockNumber>where
    AccountId: Encode,
    ProxyType: Encode,
    BlockNumber: Encode,

impl<AccountId, Hash, BlockNumber> EncodeLike<Announcement<AccountId, Hash, BlockNumber>> for Announcement<AccountId, Hash, BlockNumber>where
    AccountId: Encode,
    Hash: Encode,
    BlockNumber: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    T::ProxyType: Encode,
    <<T as Config>::CallHasher as Hash>::Output: Encode,
    T::BlockNumber: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<BlockNumber, Balance, Friends> EncodeLike<ActiveRecovery<BlockNumber, Balance, Friends>> for ActiveRecovery<BlockNumber, Balance, Friends>where
    BlockNumber: Encode,
    Balance: Encode,
    Friends: Encode,

impl<BlockNumber, Balance, Friends> EncodeLike<RecoveryConfig<BlockNumber, Balance, Friends>> for RecoveryConfig<BlockNumber, Balance, Friends>where
    BlockNumber: Encode,
    Balance: Encode,
    Friends: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::BlockNumber: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AssetId> EncodeLike<Trade<AssetId>> for Trade<AssetId>where
    PoolType<AssetId>: Encode,
    AssetId: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AssetId: Encode,
    T::Balance: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<Call, BlockNumber, PalletsOrigin, AccountId> EncodeLike<ScheduledV3<Call, BlockNumber, PalletsOrigin, AccountId>> for ScheduledV3<Call, BlockNumber, PalletsOrigin, AccountId>where
    Call: Encode,
    Option<Period<BlockNumber>>: Encode,
    PalletsOrigin: Encode,
    PhantomData<AccountId>: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::BlockNumber: Encode,
    TaskAddress<T::BlockNumber>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl EncodeLike<Vote> for Vote

impl<Balance, BlockNumber> EncodeLike<Payout<Balance, BlockNumber>> for Payout<Balance, BlockNumber>where
    Balance: Encode,
    BlockNumber: Encode,

impl<AccountId, Balance> EncodeLike<Bid<AccountId, Balance>> for Bid<AccountId, Balance>where
    AccountId: Encode,
    BidKind<AccountId, Balance>: Encode,
    Balance: Encode,

impl<AccountId, Balance> EncodeLike<BidKind<AccountId, Balance>> for BidKind<AccountId, Balance>where
    Balance: Encode,
    AccountId: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>where
    T::AccountId: Encode,
    <<T as Config<I>>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,
    Vec<T::AccountId>: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<T> EncodeLike<ConfigOp<T>> for ConfigOp<T>where
    T: Encode + Default + Codec,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    BalanceOf<T>: Encode,
    T::AccountId: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId: Ord> EncodeLike<EraRewardPoints<AccountId>> for EraRewardPoints<AccountId>where
    BTreeMap<AccountId, RewardPoint>: Encode,

impl<AccountId> EncodeLike<RewardDestination<AccountId>> for RewardDestination<AccountId>where
    AccountId: Encode,

impl<Balance> EncodeLike<UnlockChunk<Balance>> for UnlockChunk<Balance>where
    Balance: HasCompact + HasCompact,

impl<AccountId, Balance> EncodeLike<IndividualExposure<AccountId, Balance>> for IndividualExposure<AccountId, Balance>where
    AccountId: Encode,
    Balance: HasCompact + HasCompact,

impl<AccountId, Balance> EncodeLike<Exposure<AccountId, Balance>> for Exposure<AccountId, Balance>where
    Vec<IndividualExposure<AccountId, Balance>>: Encode,
    Balance: HasCompact + HasCompact,

impl<AccountId, Balance> EncodeLike<UnappliedSlash<AccountId, Balance>> for UnappliedSlash<AccountId, Balance>where
    AccountId: Encode,
    Balance: Encode + HasCompact,
    Vec<(AccountId, Balance)>: Encode,
    Vec<AccountId>: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    Option<T::AccountId>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, Balance, BlockNumber: Parameter, Hash> EncodeLike<OpenTip<AccountId, Balance, BlockNumber, Hash>> for OpenTip<AccountId, Balance, BlockNumber, Hash>where
    Hash: Encode + Parameter,
    AccountId: Encode + Parameter,
    Balance: Encode + Parameter,
    Option<BlockNumber>: Encode,
    Vec<(AccountId, Balance)>: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>where
    T::Hash: Encode,
    T::AccountId: Encode,
    BalanceOf<T, I>: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    <<T as Config>::Currencies as MultiCurrency<<T as Config>::AccountId>>::CurrencyId: Encode,
    <<T as Config>::Currencies as MultiCurrency<<T as Config>::AccountId>>::Balance: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>where
    <<T as Config>::Currencies as MultiCurrency<<T as Config>::AccountId>>::Balance: FixedPointOperand,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<Balance> EncodeLike<InclusionFee<Balance>> for InclusionFee<Balance>where
    Balance: Encode,

impl<Balance> EncodeLike<FeeDetails<Balance>> for FeeDetails<Balance>where
    Option<InclusionFee<Balance>>: Encode,
    Balance: Encode,

impl<Balance> EncodeLike<RuntimeDispatchInfo<Balance>> for RuntimeDispatchInfo<Balance>where
    Balance: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    <<T as Config>::OnChargeTransaction as OnChargeTransaction<T>>::Balance: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<AccountId, Balance> EncodeLike<Proposal<AccountId, Balance>> for Proposal<AccountId, Balance>where
    AccountId: Encode,
    Balance: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>where
    BalanceOf<T, I>: Encode,
    T::AccountId: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<AccountId, DepositBalance> EncodeLike<CollectionDetails<AccountId, DepositBalance>> for CollectionDetails<AccountId, DepositBalance>where
    AccountId: Encode,
    DepositBalance: Encode,

impl<AccountId, DepositBalance> EncodeLike<ItemDetails<AccountId, DepositBalance>> for ItemDetails<AccountId, DepositBalance>where
    AccountId: Encode,
    Option<AccountId>: Encode,
    DepositBalance: Encode,

impl<DepositBalance, StringLimit: Get<u32>> EncodeLike<CollectionMetadata<DepositBalance, StringLimit>> for CollectionMetadata<DepositBalance, StringLimit>where
    DepositBalance: Encode,
    BoundedVec<u8, StringLimit>: Encode,

impl<DepositBalance, StringLimit: Get<u32>> EncodeLike<ItemMetadata<DepositBalance, StringLimit>> for ItemMetadata<DepositBalance, StringLimit>where
    DepositBalance: Encode,
    BoundedVec<u8, StringLimit>: Encode,

impl<T: Config<I>, I: 'static> EncodeLike<Event<T, I>> for Event<T, I>where
    T::CollectionId: Encode,
    T::AccountId: Encode,
    T::ItemId: Encode,
    BoundedVec<u8, T::StringLimit>: Encode,
    Vec<T::ItemId>: Encode,
    Option<T::ItemId>: Encode,
    BoundedVec<u8, T::KeyLimit>: Encode,
    BoundedVec<u8, T::ValueLimit>: Encode,
    Option<T::CollectionId>: Encode,
    <<T as Config<I>>::Currency as Currency<<T as SystemConfig>::AccountId>>::Balance: Encode,
    Option<T::AccountId>: Encode,

impl<T, I> EncodeLike<Error<T, I>> for Error<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<Balance, BlockNumber> EncodeLike<VestingInfo<Balance, BlockNumber>> for VestingInfo<Balance, BlockNumber>where
    Balance: Encode,
    BlockNumber: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<BlockNumber> EncodeLike<QueryStatus<BlockNumber>> for QueryStatus<BlockNumber>where
    BlockNumber: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<T: Config<I>, I: 'static> EncodeLike<Call<T, I>> for Call<T, I>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    <T as Config>::BlockNumber: Encode,
    BlockNumberFor<T>: Encode,

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl EncodeLike<Call> for Call

impl<BlockNumber> EncodeLike<InboundDownwardMessage<BlockNumber>> for InboundDownwardMessage<BlockNumber>where
    BlockNumber: Encode,

impl<BlockNumber> EncodeLike<InboundHrmpMessage<BlockNumber>> for InboundHrmpMessage<BlockNumber>where
    BlockNumber: Encode,

impl<Id> EncodeLike<OutboundHrmpMessage<Id>> for OutboundHrmpMessage<Id>where
    Id: Encode,

impl EncodeLike<View> for View

impl EncodeLike<PoV> for PoV

impl<BlockNumber> EncodeLike<Collation<BlockNumber>> for Collation<BlockNumber>where
    BlockNumber: Encode,

impl EncodeLike<Id> for Id

impl<Payload, RealPayload> EncodeLike<UncheckedSigned<Payload, RealPayload>> for UncheckedSigned<Payload, RealPayload>where
    Payload: Encode,
    PhantomData<RealPayload>: Encode,

impl<H> EncodeLike<CandidateDescriptor<H>> for CandidateDescriptor<H>where
    H: Encode,

impl<H, N> EncodeLike<PersistedValidationData<H, N>> for PersistedValidationData<H, N>where
    N: Encode,
    H: Encode,

impl<N> EncodeLike<CandidateCommitments<N>> for CandidateCommitments<N>where
    N: Encode,

impl<N> EncodeLike<GroupRotationInfo<N>> for GroupRotationInfo<N>where
    N: Encode,

impl<H, N> EncodeLike<OccupiedCore<H, N>> for OccupiedCore<H, N>where
    N: Encode,
    CandidateDescriptor<H>: Encode,

impl<H, N> EncodeLike<CoreState<H, N>> for CoreState<H, N>where
    OccupiedCore<H, N>: Encode,

impl<H> EncodeLike<CandidateEvent<H>> for CandidateEvent<H>where
    CandidateReceipt<H>: Encode,

impl<N> EncodeLike<DisputeState<N>> for DisputeState<N>where
    N: Encode,
    Option<N>: Encode,

impl<HDR> EncodeLike<InherentData<HDR>> for InherentData<HDR>where
    Vec<BackedCandidate<HDR::Hash>>: Encode,
    HDR: Encode + HeaderT,

impl<H> EncodeLike<SigningContext<H>> for SigningContext<H>where
    H: Encode,

impl EncodeLike<Call> for Call

impl<AccountId, LeasePeriod> EncodeLike<ParachainTemporarySlot<AccountId, LeasePeriod>> for ParachainTemporarySlot<AccountId, LeasePeriod>where
    AccountId: Encode,
    LeasePeriod: Encode,
    Option<LeasePeriod>: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    <<T as Config>::Leaser as Leaser<<T as Config>::BlockNumber>>::LeasePeriod: Encode,
    T::BlockNumber: Encode,
    T::AccountId: Encode,
    <<<T as Config>::Leaser as Leaser<<T as Config>::BlockNumber>>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    <<<T as Config>::VestingSchedule as VestingSchedule<<T as Config>::AccountId>>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config + Send + Sync> EncodeLike<PrevalidateAttests<T>> for PrevalidateAttests<T>where
    <T as Config>::Call: IsSubType<Call<T>>,
    PhantomData<T>: Encode,

impl<BlockNumber> EncodeLike<LastContribution<BlockNumber>> for LastContribution<BlockNumber>where
    BlockNumber: Encode,

impl<AccountId, Balance, BlockNumber, LeasePeriod> EncodeLike<FundInfo<AccountId, Balance, BlockNumber, LeasePeriod>> for FundInfo<AccountId, Balance, BlockNumber, LeasePeriod>where
    AccountId: Encode,
    Balance: Encode,
    BlockNumber: Encode,
    LeasePeriod: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    <<<T as Config>::Auctioneer as Auctioneer<<T as Config>::BlockNumber>>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<Account, Balance> EncodeLike<ParaInfo<Account, Balance>> for ParaInfo<Account, Balance>where
    Account: Encode,
    Balance: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<Balance> EncodeLike<AccountStatus<Balance>> for AccountStatus<Balance>where
    Balance: Encode,

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::AccountId: Encode,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,
    T::BlockNumber: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    <T as Config>::BlockNumber: Encode,
    T::AccountId: Encode,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<BlockNumber> EncodeLike<HostConfiguration<BlockNumber>> for HostConfiguration<BlockNumber>where
    BlockNumber: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    T::BlockNumber: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Event<T>> for Event<T>where
    CandidateReceipt<T::Hash>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<N> EncodeLike<ReplacementTimes<N>> for ReplacementTimes<N>where
    N: Encode,

impl<N> EncodeLike<ParaPastCodeMeta<N>> for ParaPastCodeMeta<N>where
    Vec<ReplacementTimes<N>>: Encode,
    Option<N>: Encode,

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<T> EncodeLike<Error<T>> for Error<T>

impl<T: Config> EncodeLike<Call<T>> for Call<T>

impl<Candidate, Digest> EncodeLike<Statement<Candidate, Digest>> for Statement<Candidate, Digest>where
    Candidate: Encode,
    Digest: Encode,

impl<Candidate, Digest, AuthorityId, Signature> EncodeLike<SignedStatement<Candidate, Digest, AuthorityId, Signature>> for SignedStatement<Candidate, Digest, AuthorityId, Signature>where
    Statement<Candidate, Digest>: Encode,
    Signature: Encode,
    AuthorityId: Encode,

impl<Signature> EncodeLike<ValidityAttestation<Signature>> for ValidityAttestation<Signature>where
    Signature: Encode,

impl<Group, Candidate, AuthorityId, Signature> EncodeLike<AttestedCandidate<Group, Candidate, AuthorityId, Signature>> for AttestedCandidate<Group, Candidate, AuthorityId, Signature>where
    Group: Encode,
    Candidate: Encode,
    Vec<(AuthorityId, ValidityAttestation<Signature>)>: Encode,

impl<AccountId, Balance, IntentionID> EncodeLike<ExchangeIntention<AccountId, Balance, IntentionID>> for ExchangeIntention<AccountId, Balance, IntentionID>where
    AccountId: Encode,
    Balance: Encode,
    IntentionID: Encode,

impl EncodeLike<Call> for Call

impl<Hash, Number, E: Epoch> EncodeLike<EpochChangesV0<Hash, Number, E>> for EpochChangesV0<Hash, Number, E>where
    ForkTree<Hash, Number, PersistedEpoch<E>>: Encode,

impl<Hash, Number, E: Epoch> EncodeLike<EpochChangesV1<Hash, Number, E>> for EpochChangesV1<Hash, Number, E>where
    ForkTree<Hash, Number, PersistedEpochHeader<E>>: Encode,
    BTreeMap<(Hash, Number), PersistedEpoch<E>>: Encode,

impl<E: Epoch> EncodeLike<EpochHeader<E>> for EpochHeader<E>where
    E::Slot: Encode,

impl<E> EncodeLike<PersistedEpoch<E>> for PersistedEpoch<E>where
    E: Encode,

impl<Hash, Number, E: Epoch> EncodeLike<GapEpochs<Hash, Number, E>> for GapEpochs<Hash, Number, E>where
    Hash: Encode,
    Number: Encode,
    PersistedEpoch<E>: Encode,
    (Hash, Number, PersistedEpoch<E>): Encode,
    Option<(Hash, Number, E)>: Encode,

impl<Hash, Number, E: Epoch> EncodeLike<EpochChanges<Hash, Number, E>> for EpochChanges<Hash, Number, E>where
    ForkTree<Hash, Number, PersistedEpochHeader<E>>: Encode,
    BTreeMap<(Hash, Number), PersistedEpoch<E>>: Encode,
    Option<GapEpochs<Hash, Number, E>>: Encode,

impl<H, N> EncodeLike<AuthoritySet<H, N>> for AuthoritySet<H, N>where
    ForkTree<H, N, PendingChange<H, N>>: Encode,
    Vec<PendingChange<H, N>>: Encode,
    AuthoritySetChanges<N>: Encode,

impl<N> EncodeLike<AuthoritySetChanges<N>> for AuthoritySetChanges<N>where
    Vec<(u64, N)>: Encode,

impl<Header: HeaderT> EncodeLike<FinalityProof<Header>> for FinalityProof<Header>where
    Header::Hash: Encode,
    Vec<Header>: Encode,

impl<Block: BlockT> EncodeLike<GrandpaJustification<Block>> for GrandpaJustification<Block>where
    Commit<Block>: Encode,
    Vec<Block::Header>: Encode,

impl<Block: BlockT> EncodeLike<WarpSyncFragment<Block>> for WarpSyncFragment<Block>where
    Block::Header: Encode,
    GrandpaJustification<Block>: Encode,

impl<Block: BlockT> EncodeLike<WarpSyncProof<Block>> for WarpSyncProof<Block>where
    Vec<WarpSyncFragment<Block>>: Encode,

impl<Header, Hash, Extrinsic> EncodeLike<BlockData<Header, Hash, Extrinsic>> for BlockData<Header, Hash, Extrinsic>where
    Hash: Encode,
    Option<Header>: Encode,
    Option<Vec<Extrinsic>>: Encode,

impl<Hash, Number> EncodeLike<BlockRequest<Hash, Number>> for BlockRequest<Hash, Number>where
    FromBlock<Hash, Number>: Encode,
    Option<Hash>: Encode,

impl<Hash, Number> EncodeLike<FromBlock<Hash, Number>> for FromBlock<Hash, Number>where
    Hash: Encode,
    Number: Encode,

impl<Header, Hash, Extrinsic> EncodeLike<BlockResponse<Header, Hash, Extrinsic>> for BlockResponse<Header, Hash, Extrinsic>where
    Vec<BlockData<Header, Hash, Extrinsic>>: Encode,

impl<B: BlockT> EncodeLike<WarpProofRequest<B>> for WarpProofRequest<B>where
    B::Hash: Encode,

impl<T> EncodeLike<UntrackedSymbol<T>> for UntrackedSymbol<T>where
    PhantomData<fn() -> T>: Encode,

impl<T: Form> EncodeLike<TypeDefComposite<T>> for TypeDefComposite<T>where
    Vec<Field<T>>: Encode,

impl<T: Form> EncodeLike<Field<T>> for Field<T>where
    Option<T::String>: Encode,
    T::Type: Encode,
    Vec<T::String>: Encode,

impl<T: Form> EncodeLike<Path<T>> for Path<T>where
    Vec<T::String>: Encode,

impl<T: Form> EncodeLike<TypeDefVariant<T>> for TypeDefVariant<T>where
    Vec<Variant<T>>: Encode,

impl<T: Form> EncodeLike<Variant<T>> for Variant<T>where
    T::String: Encode,
    Vec<Field<T>>: Encode,
    Vec<T::String>: Encode,

impl<T: Form> EncodeLike<Type<T>> for Type<T>where
    Path<T>: Encode,
    Vec<TypeParameter<T>>: Encode,
    TypeDef<T>: Encode,
    Vec<T::String>: Encode,

impl<T: Form> EncodeLike<TypeParameter<T>> for TypeParameter<T>where
    T::String: Encode,
    Option<T::Type>: Encode,

impl<T: Form> EncodeLike<TypeDef<T>> for TypeDef<T>where
    TypeDefComposite<T>: Encode,
    TypeDefVariant<T>: Encode,
    TypeDefSequence<T>: Encode,
    TypeDefArray<T>: Encode,
    TypeDefTuple<T>: Encode,
    TypeDefCompact<T>: Encode,
    TypeDefBitSequence<T>: Encode,

impl<T: Form> EncodeLike<TypeDefArray<T>> for TypeDefArray<T>where
    T::Type: Encode,

impl<T: Form> EncodeLike<TypeDefTuple<T>> for TypeDefTuple<T>where
    Vec<T::Type>: Encode,

impl<T: Form> EncodeLike<TypeDefSequence<T>> for TypeDefSequence<T>where
    T::Type: Encode,

impl<T: Form> EncodeLike<TypeDefCompact<T>> for TypeDefCompact<T>where
    T::Type: Encode,

impl<T: Form> EncodeLike<TypeDefBitSequence<T>> for TypeDefBitSequence<T>where
    T::Type: Encode,

impl<AuthorityId: Codec> EncodeLike<ConsensusLog<AuthorityId>> for ConsensusLog<AuthorityId>where
    Vec<AuthorityId>: Encode,

impl EncodeLike<Slot> for Slot

impl<Header, Id> EncodeLike<EquivocationProof<Header, Id>> for EquivocationProof<Header, Id>where
    Id: Encode,
    Header: Encode,

impl EncodeLike<Void> for Void

impl<N> EncodeLike<ScheduledChange<N>> for ScheduledChange<N>where
    N: Encode,

impl<N> EncodeLike<ConsensusLog<N>> for ConsensusLog<N>where
    ScheduledChange<N>: Encode,
    N: Encode + Codec,

impl<H, N> EncodeLike<EquivocationProof<H, N>> for EquivocationProof<H, N>where
    Equivocation<H, N>: Encode,

impl<E> EncodeLike<MakeFatalError<E>> for MakeFatalError<E>where
    E: Encode,

impl<T> EncodeLike<Crossing<T>> for Crossing<T>where
    T: Encode + Encode + Decode,

impl<Hash> EncodeLike<Proof<Hash>> for Proof<Hash>where
    Vec<Hash>: Encode,

impl<Hash> EncodeLike<BatchProof<Hash>> for BatchProof<Hash>where
    Vec<Hash>: Encode,

impl<AccountId, P: PerThing> EncodeLike<Assignment<AccountId, P>> for Assignment<AccountId, P>where
    AccountId: Encode,
    Vec<(AccountId, P)>: Encode,

impl<AccountId> EncodeLike<StakedAssignment<AccountId>> for StakedAssignment<AccountId>where
    AccountId: Encode,
    Vec<(AccountId, ExtendedBalance)>: Encode,

impl<AccountId> EncodeLike<Support<AccountId>> for Support<AccountId>where
    Vec<(AccountId, ExtendedBalance)>: Encode,

impl<K, V, S> EncodeLike<BoundedBTreeMap<K, V, S>> for BoundedBTreeMap<K, V, S>where
    BTreeMap<K, V>: Encode,
    PhantomData<S>: Encode,

impl<K, V, S> EncodeLike<BTreeMap<K, V, Global>> for BoundedBTreeMap<K, V, S>where
    BTreeMap<K, V>: Encode,

impl<T, S> EncodeLike<BoundedBTreeSet<T, S>> for BoundedBTreeSet<T, S>where
    BTreeSet<T>: Encode,
    PhantomData<S>: Encode,

impl<T, S> EncodeLike<BTreeSet<T, Global>> for BoundedBTreeSet<T, S>where
    BTreeSet<T>: Encode,

impl<T, S> EncodeLike<BoundedVec<T, S>> for BoundedVec<T, S>where
    Vec<T>: Encode,
    PhantomData<S>: Encode,

impl<'a, T, S> EncodeLike<BoundedSlice<'a, T, S>> for BoundedSlice<'a, T, S>where
    T: Encode,
    &'a [T]: Encode,
    PhantomData<S>: Encode,

impl<'a, T: Encode + Decode, S: Get<u32>> EncodeLike<BoundedVec<T, S>> for BoundedSlice<'a, T, S>

impl<'a, T: Encode + Decode, S: Get<u32>> EncodeLike<WeakBoundedVec<T, S>> for BoundedSlice<'a, T, S>

impl<'a, T: Encode + Decode, S: Get<u32>> EncodeLike<Vec<T, Global>> for BoundedSlice<'a, T, S>

impl<T: Encode + Decode, S: Get<u32>> EncodeLike<Vec<T, Global>> for BoundedVec<T, S>

impl<T, S> EncodeLike<WeakBoundedVec<T, S>> for WeakBoundedVec<T, S>where
    Vec<T>: Encode,
    PhantomData<S>: Encode,

impl<Block: BlockT> EncodeLike<BlockId<Block>> for BlockId<Block>where
    Block::Hash: Encode,
    NumberFor<Block>: Encode,

impl<Header, Extrinsic: MaybeSerialize> EncodeLike<Block<Header, Extrinsic>> for Block<Header, Extrinsic>where
    Header: Encode,
    Vec<Extrinsic>: Encode,

impl<Block> EncodeLike<SignedBlock<Block>> for SignedBlock<Block>where
    Block: Encode,

impl<'a> EncodeLike<DigestItemRef<'a>> for DigestItemRef<'a>

impl EncodeLike<Era> for Era

impl<Number, Hash: HashT> EncodeLike<Header<Number, Hash>> for Header<Number, Hash>where
    Hash::Output: Encode,
    Number: HasCompact + Copy + Into<U256> + TryFrom<U256>,

impl<Call, Extra> EncodeLike<SignedPayload<Call, Extra>> for SignedPayload<Call, Extra>where
    Call: Encode,
    Extra: SignedExtension,

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

impl<AccountId, AccountIndex> EncodeLike<MultiAddress<AccountId, AccountIndex>> for MultiAddress<AccountId, AccountIndex>where
    AccountId: Encode,
    AccountIndex: HasCompact,

impl EncodeLike<Time> for Time

impl<Xt> EncodeLike<ExtrinsicWrapper<Xt>> for ExtrinsicWrapper<Xt>where
    Xt: Encode,

impl<Xt> EncodeLike<Block<Xt>> for Block<Xt>where
    Vec<Xt>: Encode,

impl<Call, Extra> EncodeLike<TestXt<Call, Extra>> for TestXt<Call, Extra>where
    Option<(u64, Extra)>: Encode,
    Call: Encode,

impl<Reporter, Offender> EncodeLike<OffenceDetails<Reporter, Offender>> for OffenceDetails<Reporter, Offender>where
    Offender: Encode,
    Vec<Reporter>: Encode,

impl EncodeLike<Call> for Call

impl EncodeLike<Call> for Call

impl<Call> EncodeLike<Order<Call>> for Order<Call>

impl<Call> EncodeLike<Xcm<Call>> for Xcm<Call>

impl<Call> EncodeLike<Order<Call>> for Order<Call>

impl<Call> EncodeLike<Xcm<Call>> for Xcm<Call>

impl<Call> EncodeLike<Xcm<Call>> for Xcm<Call>

impl<Call> EncodeLike<Instruction<Call>> for Instruction<Call>

impl<Call> EncodeLike<VersionedXcm<Call>> for VersionedXcm<Call>