pub trait Write<T> {
// Required methods
fn write(&mut self, buf: &dyn AsRef<[T]>) -> Result<usize>;
fn flush(&mut self) -> Result<()>;
// Provided method
fn write_all(&mut self, buf: &dyn AsRef<[T]>) -> Result<()> { ... }
}
pub trait Write<T> {
// Required methods
fn write(&mut self, buf: &dyn AsRef<[T]>) -> Result<usize>;
fn flush(&mut self) -> Result<()>;
// Provided method
fn write_all(&mut self, buf: &dyn AsRef<[T]>) -> Result<()> { ... }
}