Traits for working with Errors.
Error is a trait representing the basic expectations for error values,
i.e. values of type E in Result<T, E>. Errors must describe
themselves through the Display and Debug traits, and may provide
cause chain information: