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 {}