pub trait Encode {
type HeadPtr;
// Required methods
fn encode_head(&self, buf: &mut BytesMut) -> Self::HeadPtr;
fn encode_body(&self, head: Self::HeadPtr, buf: &mut BytesMut);
// Provided method
fn encode(&self) -> Vec<u8> ⓘ { ... }
}