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