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