pub trait Encode {
    fn size_hint(&self) -> usize { ... }
fn encode_to<T>(&self, dest: &mut T)
    where
        T: Output + ?Sized
, { ... }
fn encode(&self) -> Vec<u8, Global>Notable traits for Vec<u8, A>impl<A> Write for Vec<u8, A> where
    A: Allocator
{ ... }
fn using_encoded<R, F>(&self, f: F) -> R
    where
        F: FnOnce(&[u8]) -> R
, { ... }
fn encoded_size(&self) -> usize { ... } }
Expand description

Trait that allows zero-copy write of value-references to slices in LE format.

Implementations should override using_encoded for value types and encode_to and size_hint for allocating types. Wrapper types should override all methods.

Provided methods

If possible give a hint of expected size of the encoding.

This method is used inside default implementation of encode to avoid re-allocations.

Convert self to a slice and append it to the destination.

Convert self to an owned vector.

Convert self to a slice and then invoke the given closure with it.

Calculates the encoded size.

Should be used when the encoded data isn’t required.

Note

This works by using a special Output that only tracks the size. So, there are no allocations inside the output. However, this can not prevent allocations that some types are doing inside their own encoding.

Implementations on Foreign Types

source

impl Encode for Entry

Get an encoded version of this payload.

Payloads longer than 256 bytes are going to be blake2_256-hashed.

Implementors

impl Encode for Event

impl Encode for Call

impl Encode for ForWhat

impl<T, A, B> Encode for AnagolayRecord<T, A, B> where
    T: Encode,
    T: Encode,
    A: Encode,
    A: Encode,
    B: Encode,
    B: Encode

impl<T: AnagolayStructureData, U: AnagolayStructureExtra> Encode for AnagolayStructure<T, U> where
    T: Encode,
    T: Encode,
    Option<U>: Encode,
    Option<U>: Encode

impl<T: ArtifactType> Encode for AnagolayArtifactStructure<T> where
    T: Encode,
    T: Encode

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<B, O> Encode for DecodeDifferent<B, O> where
    B: Encode + 'static,
    O: Encode + 'static, 

impl<E: Encode> Encode for FnEncode<E>

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

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

impl<T: Config> Encode for CheckNonce<T> where
    T::Index: HasCompact

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

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

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

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

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

impl Encode for Phase

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

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

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

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

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

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

impl<T: Config> Encode for Call<T> where
    Vec<T::Header>: Encode,
    Vec<T::Header>: Encode

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

impl<T: Config<I>, I: 'static> Encode for Call<T, I> where
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    T::Balance: HasCompact,
    T::Balance: HasCompact,
    T::Balance: HasCompact,
    T::Balance: HasCompact,
    T::Balance: HasCompact

impl Encode for Reasons

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

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

impl<N> Encode for OldStoredPendingChange<N> where
    N: Encode,
    N: Encode,
    N: Encode,
    N: Encode

impl<N> Encode for StoredPendingChange<N> where
    N: Encode,
    N: Encode,
    N: Encode,
    N: Encode,
    Option<N>: Encode,
    Option<N>: Encode

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

impl Encode for Event

impl<T: Config> Encode for Call<T> where
    EquivocationProof<T::Hash, T::BlockNumber>: Encode,
    EquivocationProof<T::Hash, T::BlockNumber>: Encode,
    T::KeyOwnerProof: Encode,
    T::KeyOwnerProof: Encode,
    EquivocationProof<T::Hash, T::BlockNumber>: Encode,
    EquivocationProof<T::Hash, T::BlockNumber>: Encode,
    T::KeyOwnerProof: Encode,
    T::KeyOwnerProof: Encode,
    T::BlockNumber: Encode,
    T::BlockNumber: Encode,
    T::BlockNumber: Encode,
    T::BlockNumber: Encode

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

impl Encode for Event

impl<T: Config> Encode for Call<T> where
    T::Keys: Encode,
    T::Keys: Encode

impl<T: Config> Encode for Call<T> where
    Box<<T as Config>::Call>: Encode,
    Box<<T as Config>::Call>: Encode,
    Box<<T as Config>::Call>: Encode,
    Box<<T as Config>::Call>: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    Box<<T as Config>::Call>: Encode,
    Box<<T as Config>::Call>: Encode

impl<AccountId> Encode for RawEvent<AccountId> where
    AccountId: Encode,
    AccountId: Encode

impl<T: Config> Encode for Call<T> where
    T::Moment: HasCompact

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

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

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

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

impl Encode for Event

impl<T: Config> Encode for Call<T> where
    Vec<<T as Config>::Call>: Encode,
    Vec<<T as Config>::Call>: Encode,
    Box<<T as Config>::Call>: Encode,
    Box<<T as Config>::Call>: Encode,
    Vec<<T as Config>::Call>: Encode,
    Vec<<T as Config>::Call>: Encode

impl Encode for U128

impl Encode for U256

impl Encode for U512

impl Encode for H128

impl Encode for H160

impl Encode for H256

impl Encode for H512

impl Encode for Epoch

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

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

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

impl<E: Epoch> Encode for PersistedEpochHeader<E> where
    EpochHeader<E>: Encode,
    EpochHeader<E>: Encode,
    EpochHeader<E>: Encode,
    EpochHeader<E>: Encode,
    EpochHeader<E>: Encode,
    EpochHeader<E>: Encode

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

impl<T> Encode for SlotDuration<T> where
    T: Encode,
    T: Encode

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

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

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

impl Encode for Public

impl Encode for Signature

impl Encode for Public

impl Encode for Signature

impl Encode for Public

impl Encode for Signature

impl Encode for Percent

impl Encode for PerU16

impl Encode for Permill

impl Encode for Perbill

impl Encode for FixedI64

impl Encode for FixedI128

impl Encode for FixedU128

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

impl Encode for PreDigest

impl Encode for Epoch

impl Encode for Slot

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

impl Encode for VRFOutput

impl Encode for VRFProof

impl Encode for KeyTypeId

impl Encode for Public

impl Encode for Signature

impl Encode for Public

impl Encode for Signature

impl Encode for Public

impl Encode for Signature

impl Encode for HttpError

impl Encode for Timestamp

impl Encode for Duration

impl Encode for HostError

impl Encode for Entry

impl Encode for LogLevel

impl Encode for Void

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

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

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

impl Encode for Error

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

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

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

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

impl Encode for Era

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

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

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

impl<Hash> Encode for Digest<Hash> where
    Vec<DigestItem<Hash>>: Encode,
    Vec<DigestItem<Hash>>: Encode

impl<Hash: Encode> Encode for DigestItem<Hash>

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

impl Encode for Time

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

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

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

impl Encode for BadOrigin

impl<Hashing: Hash> Encode for RandomNumberGenerator<Hashing> where
    Hashing::Output: Encode,
    Hashing::Output: Encode

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

impl Encode for ModuleId

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

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

impl Encode for WasmLevel

impl Encode for WasmValue

impl Encode for Value

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

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