use std::error::Error as StdError;
pub trait Error: StdError + Send + Sync {
#[must_use]
fn is_network_related(&self) -> Option<&dyn Error>;
}
impl StdError for Box<dyn Error> {
fn source(&self) -> Option<&(dyn StdError + 'static)> {
(**self).source()
}
}
#[derive(thiserror::Error, Debug)]
#[error(transparent)]
pub(crate) struct BoxErrorWrapper(pub Box<dyn StdError + Send + Sync>);
impl Error for BoxErrorWrapper {
fn is_network_related(&self) -> Option<&dyn Error> {
None
}
}
impl From<Box<dyn StdError + Send + Sync>> for Box<dyn Error> {
fn from(value: Box<dyn StdError + Send + Sync>) -> Self {
Box::new(BoxErrorWrapper(value))
}
}