pub trait Write {
// Required methods
fn write(&mut self, buf: &[u8]) -> OrtResult<usize>;
fn flush(&mut self) -> OrtResult<()>;
// Provided methods
fn write_all(&mut self, buf: &[u8]) -> OrtResult<()> { ... }
fn write_fmt(&mut self, args: Arguments<'_>) -> OrtResult<()> { ... }
fn write_str(&mut self, s: &str) -> OrtResult<usize> { ... }
fn write_char(&mut self, c: char) -> OrtResult<usize> { ... }
}