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