1use std::{any::Any, error, result};
2
3use tokio::task::JoinError;
4
5pub type AnyResult<T> = result::Result<T, AnyBoxedError>;
10
11pub trait AnyError: error::Error + Any + Send + Sync {
18 fn as_any(&self) -> &dyn Any;
19}
20
21impl AnyError for JoinError {
22 fn as_any(&self) -> &dyn Any {
23 self
24 }
25}
26
27pub type AnyBoxedError = Box<dyn AnyError + Send + 'static>;
29
30impl error::Error for AnyBoxedError {
31 fn source(&self) -> Option<&(dyn error::Error + 'static)> {
32 self.as_ref().source()
33 }
34}
35
36impl From<JoinError> for AnyBoxedError {
37 fn from(err: JoinError) -> Self {
38 Box::new(err)
39 }
40}