pub trait Appendable {
// Required methods
fn append_bytes(&mut self, bytes: &[u8]) -> Result<(), BufferTooSmall>;
fn append_bytes_zeroed(
&mut self,
len: usize
) -> Result<&mut [u8], BufferTooSmall>;
fn bytes_written(&self) -> usize;
fn can_append(&self, bytes: usize) -> bool;
// Provided methods
fn append_value<T>(&mut self, value: &T) -> Result<(), BufferTooSmall>
where T: AsBytes + ?Sized { ... }
fn append_byte(&mut self, byte: u8) -> Result<(), BufferTooSmall> { ... }
fn append_value_zeroed<T>(
&mut self
) -> Result<LayoutVerified<&mut [u8], T>, BufferTooSmall>
where T: FromBytes + Unaligned { ... }
fn append_array_zeroed<T>(
&mut self,
num_elems: usize
) -> Result<LayoutVerified<&mut [u8], [T]>, BufferTooSmall>
where T: FromBytes + Unaligned { ... }
}