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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
use bit_cursor::{bitcursor::BitCursor, ux::*, bit_read::BitRead};
use crate::error::PacketRsResult;
pub trait PacketrsRead<Ctx>: Sized {
    fn read(buf: &mut BitCursor, ctx: Ctx) -> PacketRsResult<Self>;
}
macro_rules! packetrs_read_builtin {
    ($type:ty) => {
        impl PacketrsRead<()> for $type {
            fn read(buf: &mut BitCursor, _: ()) -> PacketRsResult<Self> {
                Ok(<$type as BitRead>::bit_read(buf)?)
            }
        }
    };
}
packetrs_read_builtin!(u2);
packetrs_read_builtin!(u3);
packetrs_read_builtin!(u4);
packetrs_read_builtin!(u5);
packetrs_read_builtin!(u6);
packetrs_read_builtin!(u7);
packetrs_read_builtin!(u8);
packetrs_read_builtin!(u9);
packetrs_read_builtin!(u10);
packetrs_read_builtin!(u11);
packetrs_read_builtin!(u12);
packetrs_read_builtin!(u13);
packetrs_read_builtin!(u14);
packetrs_read_builtin!(u15);
packetrs_read_builtin!(u16);
packetrs_read_builtin!(u17);
packetrs_read_builtin!(u18);
packetrs_read_builtin!(u19);
packetrs_read_builtin!(u20);
packetrs_read_builtin!(u21);
packetrs_read_builtin!(u22);
packetrs_read_builtin!(u23);
packetrs_read_builtin!(u24);
packetrs_read_builtin!(u25);
packetrs_read_builtin!(u26);
packetrs_read_builtin!(u27);
packetrs_read_builtin!(u28);
packetrs_read_builtin!(u29);
packetrs_read_builtin!(u30);
packetrs_read_builtin!(u31);
packetrs_read_builtin!(u32);
packetrs_read_builtin!(u128);