pub trait Error {
// Required methods
fn from(&self, f: &mut Formatter<'_>) -> FmtResult;
fn requirement(&self, f: &mut Formatter<'_>) -> FmtResult;
fn result(&self, f: &mut Formatter<'_>) -> FmtResult;
fn causes(&self, f: &mut Formatter<'_>, depth: usize) -> FmtResult;
// Provided methods
fn print(&self, f: &mut Formatter<'_>, depth: usize) -> FmtResult { ... }
fn print_full(&self, f: &mut Formatter<'_>, depth: usize) -> FmtResult { ... }
}