wtx 0.45.0

A collection of different transport implementations and related tools focused primarily on web technologies.
Documentation
macro_rules! generic_data_format_doc {
  ($ty:literal) => {
    concat!("Wrapper used in every generic ", $ty, " to manage different internal implementations.")
  };
}

macro_rules! _impl_dec {
  (
    $struct:ident<$(($($ty:tt)*) $(: $bound:path)?),*>,
    $drsr:ty,
    |$aux:ident, $dw:ident| $impl:block
  ) => {
    impl<'de, EA, $($($ty)* $(: $bound)?,)*> crate::codec::Decode<'de, crate::codec::GenericCodec<&mut $drsr, EA>> for $struct<$($($ty)*,)*> {
      #[inline]
      fn decode($dw: &mut crate::codec::DecodeWrapper<'de, &mut $drsr>) -> crate::Result<Self> {
        $impl
      }
    }
  }
}

macro_rules! _impl_dec_seq {
  (
    $struct:ident<$($ty:ident $(: $bound:path)?),*>,
    $drsr:ty,
    |$aux:ident, $buffer:ident, $dw:ident| $impl:block
  ) => {
    impl<'de, EA, $($ty: $($bound)?,)*> crate::codec::DecodeSeq<'de, crate::codec::GenericCodec<&mut $drsr, EA>> for $struct<$($ty,)*> {
      #[inline]
      fn decode_seq(
        $buffer: &mut crate::collection::Vector<Self>,
        $dw: &mut crate::codec::DecodeWrapper<'de, &mut $drsr>,
      ) -> crate::Result<()> {
        $impl
      }
    }
  }
}

macro_rules! _impl_enc {
  (
    $struct:ident<$($ty:ident $(: $bound:path)?),*>,
    $drsr:ty,
    |$this:ident, $aux:ident, $ew:ident| $impl:block
  ) => {
    impl<DA, $($ty: $($bound)?,)*> crate::codec::Encode<crate::codec::GenericCodec<DA, &mut $drsr>> for $struct<$($ty,)*> {
      #[inline]
      fn encode(
        &self,
        $ew: &mut crate::codec::EncodeWrapper<'_, &mut $drsr>
      ) -> crate::Result<()> {
        if size_of::<Self>() == 0 {
          return Ok(());
        }
        let $this = self;
        $impl
        Ok(())
      }
    }
  }
}

macro_rules! _impl_se_collections {
  (
    ($drsr:ty, $bound:path),
    $( array: |$array_self:ident, $array_bytes:ident, $array_drsr:ident| $array_block:block )?
    $( arrayvector: |$arrayvector_self:ident, $arrayvector_bytes:ident, $arrayvector_drsr:ident| $arrayvector_block:block )?
    slice_ref: |$slice_ref_self:ident, $slice_ref_bytes:ident, $slice_ref_drsr:ident| $slice_ref_block:block
    vec: |$vec_self:ident, $vec_bytes:ident, $vec_drsr:ident| $vec_block:block
  ) => {
    $(
      impl<DA, T, const N: usize> crate::codec::Encode<crate::codec::GenericCodec<DA, &mut $drsr>> for [T; N]
      where
        T: $bound,
      {
        #[inline]
        fn encode(&self, ew: &mut crate::codec::EncodeWrapper<'_, &mut $drsr>) -> crate::Result<()> {
          let $array_self = self;
          let $array_bytes = &mut *ew.buffer;
          $array_block;
          Ok(())
        }
      }
    )?

    $(
      impl<DA, L, T, const N: usize> crate::codec::Encode<crate::codec::GenericCodec<DA, &mut $drsr>> for crate::collection::ArrayVector<L, T, N>
      where
        L: crate::collection::LinearStorageLen,
        T: $bound,
      {
        #[inline]
        fn encode(&self, ew: &mut crate::codec::EncodeWrapper<'_, &mut $drsr>) -> crate::Result<()> {
          let $arrayvector_self = self;
          let $arrayvector_bytes = &mut *ew.buffer;
          $arrayvector_block;
          Ok(())
        }
      }
    )?

    impl<DA, T> crate::codec::Encode<crate::codec::GenericCodec<DA, &mut $drsr>> for &'_ [T]
    where
      T: $bound,
    {
      #[inline]
      fn encode(&self, ew: &mut crate::codec::EncodeWrapper<'_, &mut $drsr>) -> crate::Result<()> {
        let $slice_ref_self = self;
        let $slice_ref_bytes = &mut *ew.buffer;
        $slice_ref_block;
        Ok(())
      }
    }

    impl<DA, T> crate::codec::Encode<crate::codec::GenericCodec<DA, &mut $drsr>> for crate::collection::Vector<T>
    where
      T: $bound,
    {
      #[inline]
      fn encode(&self, ew: &mut crate::codec::EncodeWrapper<'_, &mut $drsr>) -> crate::Result<()> {
        let $vec_self = self;
        let $vec_bytes = &mut *ew.buffer;
        $vec_block;
        Ok(())
      }
    }
  };
}