From b0c8c757668d41e97727ee1399f83bd6fece3487 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 6 Oct 2019 17:02:43 -0400 Subject: [PATCH] Omit '0:' if only one cause --- README.md | 2 +- src/context.rs | 2 +- src/error.rs | 9 ++++++--- src/lib.rs | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 310f915..4591322 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/src/context.rs b/src/context.rs index 0b4a317..31539aa 100644 --- a/src/context.rs +++ b/src/context.rs @@ -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 { /// Wrap the error value with additional context. diff --git a/src/error.rs b/src/error.rs index 267a03c..34158d7 100644 --- a/src/error.rs +++ b/src/error.rs @@ -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)?; } diff --git a/src/lib.rs b/src/lib.rs index ff818d2..ec66f5c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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