thiserror_core/
aserror.rs

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