diff --git a/.travis.yml b/.travis.yml index 35fd0b6..1abee2e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ rust: - stable - beta - nightly - - 1.26.0 #oldest supported release + - 1.27.0 #oldest supported release matrix: fast_finish: true diff --git a/examples/display.rs b/examples/display.rs index a9189f1..be67c1b 100644 --- a/examples/display.rs +++ b/examples/display.rs @@ -2,10 +2,10 @@ extern crate exitfailure; use exitfailure::ExitDisplay; -fn main() -> Result<(), ExitDisplay> { +fn main() -> Result<(), ExitDisplay> { Ok(some_fn()?) } -fn some_fn() -> Result<(), String> { - Err("this is an error message".into()) +fn some_fn() -> Result<(), impl std::fmt::Display> { + Err("this is an error message") } diff --git a/src/lib.rs b/src/lib.rs index 075a8fe..b4102ec 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -86,26 +86,31 @@ impl> From for ExitFailure { /// ```rust,should_panic /// # extern crate exitfailure; /// # use exitfailure::ExitDisplay; -/// fn main() -> Result<(), ExitDisplay> { +/// fn main() -> Result<(), ExitDisplay> { +/// some_other_fn()?; /// Ok(some_fn()?) /// } /// -/// fn some_fn() -> Result<(), String> { -/// Err("some error".into()) +/// fn some_fn() -> Result<(), &'static str> { +/// Err("some error") +/// } +/// +/// fn some_other_fn() -> Result<(), isize> { +/// Ok(()) /// } /// ``` -pub struct ExitDisplay(E); +pub struct ExitDisplay(Box); /// Prints the underlying error type, using `Display` and not `Debug`. -impl std::fmt::Debug for ExitDisplay { +impl std::fmt::Debug for ExitDisplay { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { write!(f, "{}", self.0) } } -impl From for ExitDisplay { +impl From for ExitDisplay { fn from(e: E) -> Self { - ExitDisplay(e) + ExitDisplay(Box::new(e)) } } @@ -127,8 +132,8 @@ mod test { #[test] fn test_exitdisplay() { let mut buffer = String::new(); - let error = "some error".to_string(); - let exitdisplay: ExitDisplay = error.into(); + let error = "some error"; + let exitdisplay: ExitDisplay = error.into(); write!(buffer, "{:?}", exitdisplay).unwrap(); assert_eq!(buffer, "some error"); }