pub trait TryWrite { // Required method fn try_write(&mut self, buf: &[u8]) -> Result<Option<usize>>; // Provided method fn try_write_buf<B: Buf>(&mut self, buf: &mut B) -> Result<Option<usize>> where Self: Sized { ... } }