Skip to main content

Encode

Trait Encode 

Source
pub trait Encode {
    // Provided methods
    fn size_hint(&self) -> usize { ... }
    fn encode_to<T>(&self, dest: &mut T)
       where T: Output + ?Sized { ... }
    fn encode(&self) -> Vec<u8>  { ... }
    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§

Source

fn size_hint(&self) -> usize

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

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

Source

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

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

Source

fn encode(&self) -> Vec<u8>

Convert self to an owned vector.

Source

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

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

Source

fn encoded_size(&self) -> usize

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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Encode for ()

Source§

fn encode_to<W>(&self, _dest: &mut W)
where W: Output + ?Sized,

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

fn encode(&self) -> Vec<u8>

Source§

impl Encode for Duration

Source§

fn size_hint(&self) -> usize

Source§

fn encode(&self) -> Vec<u8>

Source§

impl Encode for NonZero<i8>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for NonZero<i16>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for NonZero<i32>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for NonZero<i64>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for NonZero<i128>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for NonZero<u8>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for NonZero<u16>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for NonZero<u32>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for NonZero<u64>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for NonZero<u128>

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for bool

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for f32

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for f64

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for i8

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for i16

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for i32

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for i64

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for i128

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for str

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for u8

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for u16

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for u32

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for u64

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl Encode for u128

Source§

fn size_hint(&self) -> usize

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl<A0, B0, C0, D0, E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (A0, B0, C0, D0, E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where A0: Encode, B0: Encode, C0: Encode, D0: Encode, E0: Encode, F0: Encode, G0: Encode, H0: Encode, I0: Encode, J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<B0, C0, D0, E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (B0, C0, D0, E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where B0: Encode, C0: Encode, D0: Encode, E0: Encode, F0: Encode, G0: Encode, H0: Encode, I0: Encode, J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<C0, D0, E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (C0, D0, E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where C0: Encode, D0: Encode, E0: Encode, F0: Encode, G0: Encode, H0: Encode, I0: Encode, J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<D0, E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (D0, E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where D0: Encode, E0: Encode, F0: Encode, G0: Encode, H0: Encode, I0: Encode, J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (E0, F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where E0: Encode, F0: Encode, G0: Encode, H0: Encode, I0: Encode, J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (F0, G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where F0: Encode, G0: Encode, H0: Encode, I0: Encode, J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (G0, H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where G0: Encode, H0: Encode, I0: Encode, J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (H0, I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where H0: Encode, I0: Encode, J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (I0, J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where I0: Encode, J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<J0, K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (J0, K0, L0, M0, N0, O0, P0, Q0, R0)
where J0: Encode, K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<K0, L0, M0, N0, O0, P0, Q0, R0> Encode for (K0, L0, M0, N0, O0, P0, Q0, R0)
where K0: Encode, L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<K, V> Encode for BTreeMap<K, V>
where K: Encode, V: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

impl<L0, M0, N0, O0, P0, Q0, R0> Encode for (L0, M0, N0, O0, P0, Q0, R0)
where L0: Encode, M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<M0, N0, O0, P0, Q0, R0> Encode for (M0, N0, O0, P0, Q0, R0)
where M0: Encode, N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<N0, O0, P0, Q0, R0> Encode for (N0, O0, P0, Q0, R0)
where N0: Encode, O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<O0, P0, Q0, R0> Encode for (O0, P0, Q0, R0)
where O0: Encode, P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<P0, Q0, R0> Encode for (P0, Q0, R0)
where P0: Encode, Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<Q0, R0> Encode for (Q0, R0)
where Q0: Encode, R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

impl<R0> Encode for (R0,)
where R0: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<T>(&self, dest: &mut T)
where T: Output + ?Sized,

Source§

fn encode(&self) -> Vec<u8>

Source§

fn using_encoded<R, F>(&self, f: F) -> R
where F: FnOnce(&[u8]) -> R,

Source§

impl<T, E> Encode for Result<T, E>
where T: Encode, E: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

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

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

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

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

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

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

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

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

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

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

impl<T> Encode for PhantomData<T>

Source§

fn encode_to<W>(&self, _dest: &mut W)
where W: Output + ?Sized,

Source§

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

Source§

fn size_hint(&self) -> usize

Source§

fn encode(&self) -> Vec<u8>

Source§

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

Source§

fn size_hint(&self) -> usize

Source§

fn encode(&self) -> Vec<u8>

Source§

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

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Source§

impl<T> Encode for [T]
where T: Encode,

Source§

fn size_hint(&self) -> usize

Source§

fn encode_to<W>(&self, dest: &mut W)
where W: Output + ?Sized,

Implementors§

Source§

impl Encode for AccountId

Source§

impl Encode for AvailabilityChunk

Source§

impl Encode for AvailabilityData

Source§

impl Encode for Balance

Source§

impl Encode for Block

Source§

impl Encode for BlockBody

Source§

impl Encode for BlockNumber

Source§

impl Encode for CompactRef<'_, ()>

Source§

impl Encode for CompactRef<'_, u8>

Source§

impl Encode for CompactRef<'_, u16>

Source§

impl Encode for CompactRef<'_, u32>

Source§

impl Encode for CompactRef<'_, u64>

Source§

impl Encode for CompactRef<'_, u128>

Source§

impl Encode for Ed25519PublicKey

Source§

impl Encode for Ed25519Signature

Source§

impl Encode for Gas

Source§

impl Encode for Guarantee

Source§

impl Encode for Hash

Source§

impl Encode for Header

Source§

impl Encode for HeaderDigest

Source§

impl Encode for OptionBool

Source§

impl Encode for Preimage

Source§

impl Encode for PublicKey

Source§

impl Encode for ServiceId

Source§

impl Encode for jam_primitives::crypto::bandersnatch::Signature

Source§

impl Encode for jam_primitives::types::Signature

Source§

impl Encode for TimeSlot

Source§

impl Encode for Timestamp

Source§

impl Encode for Transaction

Source§

impl Encode for TransactionKind

Source§

impl Encode for ValidatorKeys

Source§

impl Encode for Weight

Source§

impl Encode for WorkContext

Source§

impl Encode for WorkReport

Source§

impl Encode for WorkResult

Source§

impl<T, X> Encode for X
where T: Encode + ?Sized, X: WrapperTypeEncode<Target = T>,

Source§

impl<T> Encode for Compact<T>
where CompactRef<'a, T>: for<'a> Encode,

Source§

impl<T> Encode for CompactRef<'_, T>
where T: CompactAs, CompactRef<'b, <T as CompactAs>::As>: for<'b> Encode,