pub trait DecodeAsFields: Sized {
    // Required method
    fn decode_as_fields<'info, I: FieldIter<'info>>(
        input: &mut &[u8],
        fields: I,
        types: &'info 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<'info, I: FieldIter<'info>>( input: &mut &[u8], fields: I, types: &'info PortableRegistry ) -> Result<Self, Error>

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

Implementations on Foreign Types§

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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info PortableRegistry ) -> Result<Self, Error>

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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info 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<'info, FI: FieldIter<'info>>( input: &mut &[u8], fields: FI, types: &'info PortableRegistry ) -> Result<Self, Error>

source§

impl DecodeAsFields for ()

source§

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

Implementors§