1 use std::error::Error;
2 
3 pub trait AsDynError<'a> {
as_dyn_error(&self) -> &(dyn Error + 'a)4     fn as_dyn_error(&self) -> &(dyn Error + 'a);
5 }
6 
7 impl<'a, T: Error + 'a> AsDynError<'a> for T {
8     #[inline]
as_dyn_error(&self) -> &(dyn Error + 'a)9     fn as_dyn_error(&self) -> &(dyn Error + 'a) {
10         self
11     }
12 }
13 
14 impl<'a> AsDynError<'a> for dyn Error + 'a {
15     #[inline]
as_dyn_error(&self) -> &(dyn Error + 'a)16     fn as_dyn_error(&self) -> &(dyn Error + 'a) {
17         self
18     }
19 }
20 
21 impl<'a> AsDynError<'a> for dyn Error + Send + 'a {
22     #[inline]
as_dyn_error(&self) -> &(dyn Error + 'a)23     fn as_dyn_error(&self) -> &(dyn Error + 'a) {
24         self
25     }
26 }
27 
28 impl<'a> AsDynError<'a> for dyn Error + Send + Sync + 'a {
29     #[inline]
as_dyn_error(&self) -> &(dyn Error + 'a)30     fn as_dyn_error(&self) -> &(dyn Error + 'a) {
31         self
32     }
33 }
34