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
//! Trait for parsing frame metadata from a header without decoding the payload.
/// Parse frame metadata from a byte slice without decoding the payload.
///
/// # Examples
///
/// ```rust,no_run
/// use std::io;
///
/// use bytes::Bytes;
/// use wireframe::frame::FrameMetadata;
///
/// struct Demo;
/// impl FrameMetadata for Demo {
/// type Frame = (u32, Bytes); // (id, payload)
/// type Error = io::Error;
/// fn parse(&self, src: &[u8]) -> Result<(Self::Frame, usize), Self::Error> {
/// if src.len() < 4 {
/// return Err(io::Error::new(io::ErrorKind::UnexpectedEof, "len"));
/// }
/// let id = u32::from_be_bytes([src[0], src[1], src[2], src[3]]);
/// Ok(((id, Bytes::copy_from_slice(&src[4..])), src.len()))
/// }
/// }
/// ```