pub trait ErrorDiagnostic: StdError + 'static {
type Kind: ResultKind;
// Required method
fn kind(&self) -> Self::Kind;
// Provided methods
fn service(&self) -> Option<&'static str> { ... }
fn backtrace(&self) -> Option<&Backtrace> { ... }
fn chain(self) -> ErrorChain<Self::Kind>
where Self: Sized { ... }
}