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