pub trait DecodeAsFields: Sized {
    // Required method
    fn decode_as_fields(
        input: &mut &[u8],
        fields: &[PortableField],
        types: &PortableRegistry
    ) -> Result<Self, Error>;

    // Provided method
    fn decode_as_field_ids(
        input: &mut &[u8],
        field_ids: &[PortableFieldId],
        types: &PortableRegistry
    ) -> Result<Self, Error> { ... }
}
Expand description

This is similar to DecodeAsType, except that it’s instead implemented for types that can be given a list of fields denoting the type being decoded from and attempt to do this decoding. This is generally implemented just for tuple and struct types, and is automatically implemented via the DecodeAsType macro.

Required Methods§

source

fn decode_as_fields( input: &mut &[u8], fields: &[PortableField], types: &PortableRegistry ) -> Result<Self, Error>

Given some bytes and some fields denoting their structure, attempt to decode.

Provided Methods§

source

fn decode_as_field_ids( input: &mut &[u8], field_ids: &[PortableFieldId], types: &PortableRegistry ) -> Result<Self, Error>

Given some bytes and some field IDs denoting their structure, attempt to decode.

Implementations on Foreign Types§

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K, L, M)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error> + From<<L::Visitor as Visitor>::Error> + From<<M::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor, L: IntoVisitor, M: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B> DecodeAsFields for (A, B)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error>, B: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl DecodeAsFields for ()

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error> + From<<L::Visitor as Visitor>::Error> + From<<M::Visitor as Visitor>::Error> + From<<N::Visitor as Visitor>::Error> + From<<O::Visitor as Visitor>::Error> + From<<P::Visitor as Visitor>::Error> + From<<Q::Visitor as Visitor>::Error> + From<<R::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor, L: IntoVisitor, M: IntoVisitor, N: IntoVisitor, O: IntoVisitor, P: IntoVisitor, Q: IntoVisitor, R: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A> DecodeAsFields for (A,)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error>,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error> + From<<L::Visitor as Visitor>::Error> + From<<M::Visitor as Visitor>::Error> + From<<N::Visitor as Visitor>::Error> + From<<O::Visitor as Visitor>::Error> + From<<P::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor, L: IntoVisitor, M: IntoVisitor, N: IntoVisitor, O: IntoVisitor, P: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error> + From<<L::Visitor as Visitor>::Error> + From<<M::Visitor as Visitor>::Error> + From<<N::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor, L: IntoVisitor, M: IntoVisitor, N: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I> DecodeAsFields for (A, B, C, D, E, F, G, H, I)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J, K> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K, L)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error> + From<<L::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor, L: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error> + From<<L::Visitor as Visitor>::Error> + From<<M::Visitor as Visitor>::Error> + From<<N::Visitor as Visitor>::Error> + From<<O::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor, L: IntoVisitor, M: IntoVisitor, N: IntoVisitor, O: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E> DecodeAsFields for (A, B, C, D, E)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G> DecodeAsFields for (A, B, C, D, E, F, G)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error> + From<<L::Visitor as Visitor>::Error> + From<<M::Visitor as Visitor>::Error> + From<<N::Visitor as Visitor>::Error> + From<<O::Visitor as Visitor>::Error> + From<<P::Visitor as Visitor>::Error> + From<<Q::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor, L: IntoVisitor, M: IntoVisitor, N: IntoVisitor, O: IntoVisitor, P: IntoVisitor, Q: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F> DecodeAsFields for (A, B, C, D, E, F)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D> DecodeAsFields for (A, B, C, D)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error> + From<<L::Visitor as Visitor>::Error> + From<<M::Visitor as Visitor>::Error> + From<<N::Visitor as Visitor>::Error> + From<<O::Visitor as Visitor>::Error> + From<<P::Visitor as Visitor>::Error> + From<<Q::Visitor as Visitor>::Error> + From<<R::Visitor as Visitor>::Error> + From<<S::Visitor as Visitor>::Error> + From<<T::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor, L: IntoVisitor, M: IntoVisitor, N: IntoVisitor, O: IntoVisitor, P: IntoVisitor, Q: IntoVisitor, R: IntoVisitor, S: IntoVisitor, T: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S> DecodeAsFields for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error> + From<<I::Visitor as Visitor>::Error> + From<<J::Visitor as Visitor>::Error> + From<<K::Visitor as Visitor>::Error> + From<<L::Visitor as Visitor>::Error> + From<<M::Visitor as Visitor>::Error> + From<<N::Visitor as Visitor>::Error> + From<<O::Visitor as Visitor>::Error> + From<<P::Visitor as Visitor>::Error> + From<<Q::Visitor as Visitor>::Error> + From<<R::Visitor as Visitor>::Error> + From<<S::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor, I: IntoVisitor, J: IntoVisitor, K: IntoVisitor, L: IntoVisitor, M: IntoVisitor, N: IntoVisitor, O: IntoVisitor, P: IntoVisitor, Q: IntoVisitor, R: IntoVisitor, S: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C, D, E, F, G, H> DecodeAsFields for (A, B, C, D, E, F, G, H)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error> + From<<D::Visitor as Visitor>::Error> + From<<E::Visitor as Visitor>::Error> + From<<F::Visitor as Visitor>::Error> + From<<G::Visitor as Visitor>::Error> + From<<H::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor, D: IntoVisitor, E: IntoVisitor, F: IntoVisitor, G: IntoVisitor, H: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

source§

impl<A, B, C> DecodeAsFields for (A, B, C)where A: IntoVisitor, Error: From<<A::Visitor as Visitor>::Error> + From<<B::Visitor as Visitor>::Error> + From<<C::Visitor as Visitor>::Error>, B: IntoVisitor, C: IntoVisitor,

source§

fn decode_as_fields( input: &mut &[u8], fields: &[Field<PortableForm>], types: &PortableRegistry ) -> Result<Self, Error>

Implementors§