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