muta_protocol/codec/
macro.rs1#[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}