1use bytes::{BufMut, BytesMut};
2
3pub trait ReadBuf: BufMut {
5 fn init_mut(&mut self) -> &mut [u8];
7}
8
9impl ReadBuf for &'_ mut [u8] {
10 #[inline(always)]
11 fn init_mut(&mut self) -> &mut [u8] {
12 self
13 }
14}
15
16impl ReadBuf for BytesMut {
17 #[inline(always)]
18 fn init_mut(&mut self) -> &mut [u8] {
19 let remaining = self.capacity() - self.len();
21
22 self.put_bytes(0, remaining);
24
25 self
26 }
27}
28
29#[test]
30fn test_read_buf_bytes_mut() {
31 let mut buf = BytesMut::with_capacity(8);
32 buf.put_u32(0x12345678);
33
34 assert_eq!(buf.init_mut(), [0x12, 0x34, 0x56, 0x78, 0, 0, 0, 0]);
35}