pub trait Buffer {
// Required methods
fn as_slice(&self) -> &[u8];
fn as_slice_mut(&mut self) -> &mut [u8];
// Provided methods
fn grow(&mut self, new_size: usize) { ... }
fn is_empty(&self) -> bool { ... }
fn len(&self) -> usize { ... }
}