derive_more/vendor/thiserror/
aserror.rs

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