pub trait Packet<B>: Sizedwhere
B: PacketBytes,{
type Header: PacketHeader;
// Required methods
fn header(&self) -> &Self::Header;
fn header_mut(&mut self) -> &mut Self::Header;
fn empty() -> Self;
fn from_bytes_and_header(bytes: B, header: Self::Header) -> Result<Self>;
fn into_bytes(self) -> B;
}
Required Associated Types§
type Header: PacketHeader
Required Methods§
fn header(&self) -> &Self::Header
fn header_mut(&mut self) -> &mut Self::Header
Sourcefn empty() -> Self
fn empty() -> Self
Returns an empty header this is used internally by this crate.
§Important
body_len
needs to return 0
Sourcefn from_bytes_and_header(bytes: B, header: Self::Header) -> Result<Self>
fn from_bytes_and_header(bytes: B, header: Self::Header) -> Result<Self>
The bytes.body()
length should always be the same value has
header.body_len()
fn into_bytes(self) -> B
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.