bincode-purplecoin 2.0.0-rc.2

A binary serialization / deserialization strategy for transforming structs into bytes and vice versa!
Documentation
use super::{Decode, Decoder};
use crate::error::DecodeError;

impl<A> Decode for (A,)
where
    A: Decode,
{
    fn decode<_D: Decoder>(mut decoder: &mut _D) -> Result<Self, DecodeError> {
        Ok((A::decode(&mut decoder)?,))
    }
}

impl<A, B> Decode for (A, B)
where
    A: Decode,
    B: Decode,
{
    fn decode<_D: Decoder>(mut decoder: &mut _D) -> Result<Self, DecodeError> {
        Ok((A::decode(&mut decoder)?, B::decode(&mut decoder)?))
    }
}

impl<A, B, C> Decode for (A, B, C)
where
    A: Decode,
    B: Decode,
    C: Decode,
{
    fn decode<_D: Decoder>(mut decoder: &mut _D) -> Result<Self, DecodeError> {
        Ok((
            A::decode(&mut decoder)?,
            B::decode(&mut decoder)?,
            C::decode(&mut decoder)?,
        ))
    }
}

impl<A, B, C, D> Decode for (A, B, C, D)
where
    A: Decode,
    B: Decode,
    C: Decode,
    D: Decode,
{
    fn decode<_D: Decoder>(mut decoder: &mut _D) -> Result<Self, DecodeError> {
        Ok((
            A::decode(&mut decoder)?,
            B::decode(&mut decoder)?,
            C::decode(&mut decoder)?,
            D::decode(&mut decoder)?,
        ))
    }
}

impl<A, B, C, D, E> Decode for (A, B, C, D, E)
where
    A: Decode,
    B: Decode,
    C: Decode,
    D: Decode,
    E: Decode,
{
    fn decode<_D: Decoder>(mut decoder: &mut _D) -> Result<Self, DecodeError> {
        Ok((
            A::decode(&mut decoder)?,
            B::decode(&mut decoder)?,
            C::decode(&mut decoder)?,
            D::decode(&mut decoder)?,
            E::decode(&mut decoder)?,
        ))
    }
}

impl<A, B, C, D, E, F> Decode for (A, B, C, D, E, F)
where
    A: Decode,
    B: Decode,
    C: Decode,
    D: Decode,
    E: Decode,
    F: Decode,
{
    fn decode<_D: Decoder>(mut decoder: &mut _D) -> Result<Self, DecodeError> {
        Ok((
            A::decode(&mut decoder)?,
            B::decode(&mut decoder)?,
            C::decode(&mut decoder)?,
            D::decode(&mut decoder)?,
            E::decode(&mut decoder)?,
            F::decode(&mut decoder)?,
        ))
    }
}

impl<A, B, C, D, E, F, G> Decode for (A, B, C, D, E, F, G)
where
    A: Decode,
    B: Decode,
    C: Decode,
    D: Decode,
    E: Decode,
    F: Decode,
    G: Decode,
{
    fn decode<_D: Decoder>(mut decoder: &mut _D) -> Result<Self, DecodeError> {
        Ok((
            A::decode(&mut decoder)?,
            B::decode(&mut decoder)?,
            C::decode(&mut decoder)?,
            D::decode(&mut decoder)?,
            E::decode(&mut decoder)?,
            F::decode(&mut decoder)?,
            G::decode(&mut decoder)?,
        ))
    }
}

impl<A, B, C, D, E, F, G, H> Decode for (A, B, C, D, E, F, G, H)
where
    A: Decode,
    B: Decode,
    C: Decode,
    D: Decode,
    E: Decode,
    F: Decode,
    G: Decode,
    H: Decode,
{
    fn decode<_D: Decoder>(mut decoder: &mut _D) -> Result<Self, DecodeError> {
        Ok((
            A::decode(&mut decoder)?,
            B::decode(&mut decoder)?,
            C::decode(&mut decoder)?,
            D::decode(&mut decoder)?,
            E::decode(&mut decoder)?,
            F::decode(&mut decoder)?,
            G::decode(&mut decoder)?,
            H::decode(&mut decoder)?,
        ))
    }
}