derive_more/vendor/thiserror/
aserror.rs

1#[cfg(not(feature = "std"))]
2use core::error::Error;
3#[cfg(feature = "std")]
4use std::error::Error;
5
6use core::panic::UnwindSafe;
7
8#[doc(hidden)]
9pub trait AsDynError<'a>: Sealed {
10    fn as_dyn_error(&self) -> &(dyn Error + 'a);
11}
12
13impl<'a, T: Error + 'a> AsDynError<'a> for T {
14    #[inline]
15    fn as_dyn_error(&self) -> &(dyn Error + 'a) {
16        self
17    }
18}
19
20impl<'a> AsDynError<'a> for dyn Error + 'a {
21    #[inline]
22    fn as_dyn_error(&self) -> &(dyn Error + 'a) {
23        self
24    }
25}
26
27impl<'a> AsDynError<'a> for dyn Error + Send + 'a {
28    #[inline]
29    fn as_dyn_error(&self) -> &(dyn Error + 'a) {
30        self
31    }
32}
33
34impl<'a> AsDynError<'a> for dyn Error + Send + Sync + 'a {
35    #[inline]
36    fn as_dyn_error(&self) -> &(dyn Error + 'a) {
37        self
38    }
39}
40
41impl<'a> AsDynError<'a> for dyn Error + Send + Sync + UnwindSafe + 'a {
42    #[inline]
43    fn as_dyn_error(&self) -> &(dyn Error + 'a) {
44        self
45    }
46}
47
48#[doc(hidden)]
49pub trait Sealed {}
50impl<T: Error> Sealed for T {}
51impl Sealed for dyn Error + '_ {}
52impl Sealed for dyn Error + Send + '_ {}
53impl Sealed for dyn Error + Send + Sync + '_ {}
54impl Sealed for dyn Error + Send + Sync + UnwindSafe + '_ {}