proto_packet/io/macros/
impl_enum_decode.rs1#[macro_export]
5macro_rules! impl_enum_decode {
6 ($enum_type:ty) => {
7 impl enc::DecodeFromReadPrefix for $enum_type {
8 fn decode_from_read_prefix_with_first_byte<R>(
9 r: &mut R,
10 first: u8,
11 ) -> Result<Self, enc::Error>
12 where
13 R: std::io::Read,
14 {
15 let value: u32 =
16 enc::var_int::VarInt32::decode_from_read_prefix_with_first_byte(r, first)?
17 .value();
18 let tag: $crate::io::TagNumber = $crate::io::TagNumber::new(value)
19 .ok_or(enc::Error::InvalidEncodedData { reason: None })?;
20 Ok(<$enum_type>::from(tag))
21 }
22 }
23
24 enc::impl_decode_from_read_by_prefix!($enum_type);
25 };
26}