use std::{any::Any, error, result};
use tokio::task::JoinError;
pub type AnyResult<T> = result::Result<T, AnyBoxedError>;
pub trait AnyError: error::Error + Any + Send + Sync {
fn as_any(&self) -> &dyn Any;
}
impl AnyError for JoinError {
fn as_any(&self) -> &dyn Any {
self
}
}
pub type AnyBoxedError = Box<dyn AnyError + Send + 'static>;
impl error::Error for AnyBoxedError {
fn source(&self) -> Option<&(dyn error::Error + 'static)> {
self.as_ref().source()
}
}
impl From<JoinError> for AnyBoxedError {
fn from(err: JoinError) -> Self {
Box::new(err)
}
}