pub trait IoWrite { type Error: Error; // Required method fn write_byte(&mut self, byte: u8) -> Result<(), Self::Error>; // Provided method fn write_bytes(&mut self, buf: &[u8]) -> Result<(), Self::Error> { ... } }