muta_protocol/codec/
macro.rs

1#[macro_export]
2macro_rules! field {
3    ($opt_field:expr, $type:expr, $field:expr) => {
4        $opt_field.ok_or_else(|| crate::codec::CodecError::MissingField {
5            r#type: $type,
6            field:  $field,
7        })
8    };
9}
10
11#[macro_export]
12macro_rules! impl_default_bytes_codec_for {
13    ($category:ident, [$($type:ident),+]) => (
14        use crate::types::$category;
15
16        $(
17            impl ProtocolCodecSync for $category::$type {
18                fn encode_sync(&self) -> ProtocolResult<Bytes>  {
19                    let ser_type = $type::from(self.clone());
20                    let mut buf = Vec::with_capacity(ser_type.encoded_len());
21
22                    ser_type.encode(&mut buf).map_err(CodecError::from)?;
23
24                    Ok(Bytes::from(buf))
25                }
26
27                fn decode_sync(bytes: Bytes) -> ProtocolResult<Self> {
28                    let ser_type = $type::decode(bytes).map_err(CodecError::from)?;
29
30                    $category::$type::try_from(ser_type)
31                }
32            }
33        )+
34    )
35}