Omit '0:' if only one cause

This commit is contained in:
David Tolnay 2019-10-06 17:02:43 -04:00
parent ad275d587f
commit b0c8c75766
No known key found for this signature in database
GPG Key ID: F9BA143B95FF6D82
4 changed files with 9 additions and 6 deletions

View File

@ -57,7 +57,7 @@ anyhow = "=1.0.0-alpha.1"
Error: failed to read instrs from ./path/to/instrs.jsox
Caused by:
0: No such file or directory (os error 2)
No such file or directory (os error 2)
```
- Downcasting is supported and can be by value, by shared reference, or by

View File

@ -45,7 +45,7 @@ use std::backtrace::Backtrace;
/// Error: failed to read instrs from ./path/to/instrs.jsox
///
/// caused by:
/// 0: No such file or directory (os error 2)
/// No such file or directory (os error 2)
/// ```
pub trait Context<T, E> {
/// Wrap the error value with additional context.

View File

@ -316,10 +316,13 @@ impl Debug for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
writeln!(f, "{}", self.inner.error())?;
let mut chain = self.chain().skip(1).enumerate();
let mut chain = self.chain().skip(1).enumerate().peekable();
if let Some((n, error)) = chain.next() {
writeln!(f, "\nCaused by:")?;
writeln!(f, " {}: {}", n, error)?;
write!(f, "\nCaused by:\n ")?;
if chain.peek().is_some() {
write!(f, "{}: ", n)?;
}
writeln!(f, "{}", error)?;
for (n, error) in chain {
writeln!(f, " {}: {}", n, error)?;
}

View File

@ -81,7 +81,7 @@
//! Error: failed to read instrs from ./path/to/instrs.jsox
//!
//! Caused by:
//! 0: No such file or directory (os error 2)
//! No such file or directory (os error 2)
//! ```
//!
//! - Downcasting is supported and can be by value, by shared reference, or by