desert_core 0.1.5

Binary serialization library for Rust (core crate)
Documentation
use crate::adt::{AdtDeserializer, EMPTY_ADT_METADATA};
use crate::{BinaryDeserializer, BinaryInput, DeserializationContext};

fn deserialize_tuple1<T1: BinaryDeserializer>(
    deserializer: &mut AdtDeserializer<1>,
) -> crate::Result<(T1,)> {
    Ok((deserializer.read_field("_0", None)?,))
}

fn deserialize_tuple2<T1: BinaryDeserializer, T2: BinaryDeserializer>(
    deserializer: &mut AdtDeserializer<1>,
) -> crate::Result<(T1, T2)> {
    Ok((
        deserializer.read_field("_0", None)?,
        deserializer.read_field("_1", None)?,
    ))
}

fn deserialize_tuple3<T1: BinaryDeserializer, T2: BinaryDeserializer, T3: BinaryDeserializer>(
    deserializer: &mut AdtDeserializer<1>,
) -> crate::Result<(T1, T2, T3)> {
    Ok((
        deserializer.read_field("_0", None)?,
        deserializer.read_field("_1", None)?,
        deserializer.read_field("_2", None)?,
    ))
}

fn deserialize_tuple4<
    T1: BinaryDeserializer,
    T2: BinaryDeserializer,
    T3: BinaryDeserializer,
    T4: BinaryDeserializer,
>(
    deserializer: &mut AdtDeserializer<1>,
) -> crate::Result<(T1, T2, T3, T4)> {
    Ok((
        deserializer.read_field("_0", None)?,
        deserializer.read_field("_1", None)?,
        deserializer.read_field("_2", None)?,
        deserializer.read_field("_3", None)?,
    ))
}

fn deserialize_tuple5<
    T1: BinaryDeserializer,
    T2: BinaryDeserializer,
    T3: BinaryDeserializer,
    T4: BinaryDeserializer,
    T5: BinaryDeserializer,
>(
    deserializer: &mut AdtDeserializer<1>,
) -> crate::Result<(T1, T2, T3, T4, T5)> {
    Ok((
        deserializer.read_field("_0", None)?,
        deserializer.read_field("_1", None)?,
        deserializer.read_field("_2", None)?,
        deserializer.read_field("_3", None)?,
        deserializer.read_field("_4", None)?,
    ))
}

fn deserialize_tuple6<
    T1: BinaryDeserializer,
    T2: BinaryDeserializer,
    T3: BinaryDeserializer,
    T4: BinaryDeserializer,
    T5: BinaryDeserializer,
    T6: BinaryDeserializer,
>(
    deserializer: &mut AdtDeserializer<1>,
) -> crate::Result<(T1, T2, T3, T4, T5, T6)> {
    Ok((
        deserializer.read_field("_0", None)?,
        deserializer.read_field("_1", None)?,
        deserializer.read_field("_2", None)?,
        deserializer.read_field("_3", None)?,
        deserializer.read_field("_4", None)?,
        deserializer.read_field("_5", None)?,
    ))
}

fn deserialize_tuple7<
    T1: BinaryDeserializer,
    T2: BinaryDeserializer,
    T3: BinaryDeserializer,
    T4: BinaryDeserializer,
    T5: BinaryDeserializer,
    T6: BinaryDeserializer,
    T7: BinaryDeserializer,
>(
    deserializer: &mut AdtDeserializer<1>,
) -> crate::Result<(T1, T2, T3, T4, T5, T6, T7)> {
    Ok((
        deserializer.read_field("_0", None)?,
        deserializer.read_field("_1", None)?,
        deserializer.read_field("_2", None)?,
        deserializer.read_field("_3", None)?,
        deserializer.read_field("_4", None)?,
        deserializer.read_field("_5", None)?,
        deserializer.read_field("_6", None)?,
    ))
}

fn deserialize_tuple8<
    T1: BinaryDeserializer,
    T2: BinaryDeserializer,
    T3: BinaryDeserializer,
    T4: BinaryDeserializer,
    T5: BinaryDeserializer,
    T6: BinaryDeserializer,
    T7: BinaryDeserializer,
    T8: BinaryDeserializer,
>(
    deserializer: &mut AdtDeserializer<1>,
) -> crate::Result<(T1, T2, T3, T4, T5, T6, T7, T8)> {
    Ok((
        deserializer.read_field("_0", None)?,
        deserializer.read_field("_1", None)?,
        deserializer.read_field("_2", None)?,
        deserializer.read_field("_3", None)?,
        deserializer.read_field("_4", None)?,
        deserializer.read_field("_5", None)?,
        deserializer.read_field("_6", None)?,
        deserializer.read_field("_7", None)?,
    ))
}

impl<T1: BinaryDeserializer> BinaryDeserializer for (T1,) {
    fn deserialize(context: &mut DeserializationContext<'_>) -> crate::Result<Self> {
        let stored_version = context.read_u8()?;

        if stored_version == 0 {
            let mut deserializer = AdtDeserializer::new_v0(&EMPTY_ADT_METADATA, context)?;
            deserialize_tuple1(&mut deserializer)
        } else {
            let mut deserializer =
                AdtDeserializer::new(&EMPTY_ADT_METADATA, context, stored_version)?;
            deserialize_tuple1(&mut deserializer)
        }
    }
}

impl<T1: BinaryDeserializer, T2: BinaryDeserializer> BinaryDeserializer for (T1, T2) {
    fn deserialize(context: &mut DeserializationContext<'_>) -> crate::Result<Self> {
        let stored_version = context.read_u8()?;

        if stored_version == 0 {
            let mut deserializer = AdtDeserializer::new_v0(&EMPTY_ADT_METADATA, context)?;
            deserialize_tuple2(&mut deserializer)
        } else {
            let mut deserializer =
                AdtDeserializer::new(&EMPTY_ADT_METADATA, context, stored_version)?;
            deserialize_tuple2(&mut deserializer)
        }
    }
}

impl<T1: BinaryDeserializer, T2: BinaryDeserializer, T3: BinaryDeserializer> BinaryDeserializer
    for (T1, T2, T3)
{
    fn deserialize(context: &mut DeserializationContext<'_>) -> crate::Result<Self> {
        let stored_version = context.read_u8()?;

        if stored_version == 0 {
            let mut deserializer = AdtDeserializer::new_v0(&EMPTY_ADT_METADATA, context)?;
            deserialize_tuple3(&mut deserializer)
        } else {
            let mut deserializer =
                AdtDeserializer::new(&EMPTY_ADT_METADATA, context, stored_version)?;
            deserialize_tuple3(&mut deserializer)
        }
    }
}

impl<
        T1: BinaryDeserializer,
        T2: BinaryDeserializer,
        T3: BinaryDeserializer,
        T4: BinaryDeserializer,
    > BinaryDeserializer for (T1, T2, T3, T4)
{
    fn deserialize(context: &mut DeserializationContext<'_>) -> crate::Result<Self> {
        let stored_version = context.read_u8()?;

        if stored_version == 0 {
            let mut deserializer = AdtDeserializer::new_v0(&EMPTY_ADT_METADATA, context)?;
            deserialize_tuple4(&mut deserializer)
        } else {
            let mut deserializer =
                AdtDeserializer::new(&EMPTY_ADT_METADATA, context, stored_version)?;
            deserialize_tuple4(&mut deserializer)
        }
    }
}

impl<
        T1: BinaryDeserializer,
        T2: BinaryDeserializer,
        T3: BinaryDeserializer,
        T4: BinaryDeserializer,
        T5: BinaryDeserializer,
    > BinaryDeserializer for (T1, T2, T3, T4, T5)
{
    fn deserialize(context: &mut DeserializationContext<'_>) -> crate::Result<Self> {
        let stored_version = context.read_u8()?;

        if stored_version == 0 {
            let mut deserializer = AdtDeserializer::new_v0(&EMPTY_ADT_METADATA, context)?;
            deserialize_tuple5(&mut deserializer)
        } else {
            let mut deserializer =
                AdtDeserializer::new(&EMPTY_ADT_METADATA, context, stored_version)?;
            deserialize_tuple5(&mut deserializer)
        }
    }
}

impl<
        T1: BinaryDeserializer,
        T2: BinaryDeserializer,
        T3: BinaryDeserializer,
        T4: BinaryDeserializer,
        T5: BinaryDeserializer,
        T6: BinaryDeserializer,
    > BinaryDeserializer for (T1, T2, T3, T4, T5, T6)
{
    fn deserialize(context: &mut DeserializationContext<'_>) -> crate::Result<Self> {
        let stored_version = context.read_u8()?;

        if stored_version == 0 {
            let mut deserializer = AdtDeserializer::new_v0(&EMPTY_ADT_METADATA, context)?;
            deserialize_tuple6(&mut deserializer)
        } else {
            let mut deserializer =
                AdtDeserializer::new(&EMPTY_ADT_METADATA, context, stored_version)?;
            deserialize_tuple6(&mut deserializer)
        }
    }
}

impl<
        T1: BinaryDeserializer,
        T2: BinaryDeserializer,
        T3: BinaryDeserializer,
        T4: BinaryDeserializer,
        T5: BinaryDeserializer,
        T6: BinaryDeserializer,
        T7: BinaryDeserializer,
    > BinaryDeserializer for (T1, T2, T3, T4, T5, T6, T7)
{
    fn deserialize(context: &mut DeserializationContext<'_>) -> crate::Result<Self> {
        let stored_version = context.read_u8()?;

        if stored_version == 0 {
            let mut deserializer = AdtDeserializer::new_v0(&EMPTY_ADT_METADATA, context)?;
            deserialize_tuple7(&mut deserializer)
        } else {
            let mut deserializer =
                AdtDeserializer::new(&EMPTY_ADT_METADATA, context, stored_version)?;
            deserialize_tuple7(&mut deserializer)
        }
    }
}

impl<
        T1: BinaryDeserializer,
        T2: BinaryDeserializer,
        T3: BinaryDeserializer,
        T4: BinaryDeserializer,
        T5: BinaryDeserializer,
        T6: BinaryDeserializer,
        T7: BinaryDeserializer,
        T8: BinaryDeserializer,
    > BinaryDeserializer for (T1, T2, T3, T4, T5, T6, T7, T8)
{
    fn deserialize(context: &mut DeserializationContext<'_>) -> crate::Result<Self> {
        let stored_version = context.read_u8()?;

        if stored_version == 0 {
            let mut deserializer = AdtDeserializer::new_v0(&EMPTY_ADT_METADATA, context)?;
            deserialize_tuple8(&mut deserializer)
        } else {
            let mut deserializer =
                AdtDeserializer::new(&EMPTY_ADT_METADATA, context, stored_version)?;
            deserialize_tuple8(&mut deserializer)
        }
    }
}