1use std::fmt::{Debug, Display};
5
6use eyre::{eyre, Report};
7
8pub trait DisplayToEyre<T, E: Display>: private::Sealed {
9 fn display_to_eyre(self) -> Result<T, Report>;
11}
12
13pub trait DebugToEyre<T, E: Debug>: private::Sealed {
14 fn debug_to_eyre(self) -> Result<T, Report>;
16}
17
18impl<T, E: Display> DisplayToEyre<T, E> for Result<T, E> {
19 #[inline]
20 fn display_to_eyre(self) -> Result<T, Report> {
21 self.map_err(|e| eyre!("{}", e))
22 }
23}
24
25impl<T, E: Debug> DebugToEyre<T, E> for Result<T, E> {
26 #[inline]
27 fn debug_to_eyre(self) -> Result<T, Report> {
28 self.map_err(|e| eyre!("{:?}", e))
29 }
30}
31
32mod private {
33 pub trait Sealed {}
34 impl<T, E> Sealed for Result<T, E> {}
35}