use std::{
boxed::Box, error::Error, ffi::FromBytesWithNulError, ffi::NulError, fmt, str::Utf8Error,
};
#[derive(Debug)]
pub struct ModelError {
side: Option<Box<dyn Error + 'static + Send>>,
}
impl Error for ModelError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
self.side.as_ref().map(|e| e.as_ref() as &_)
}
}
impl fmt::Display for ModelError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "ModelError: {{ Cause: {:?} }}", self)
}
}
impl From<FromBytesWithNulError> for ModelError {
fn from(error: FromBytesWithNulError) -> Self {
ModelError {
side: Some(Box::new(error)),
}
}
}
impl From<NulError> for ModelError {
fn from(error: NulError) -> Self {
ModelError {
side: Some(Box::new(error)),
}
}
}
impl From<Utf8Error> for ModelError {
fn from(error: Utf8Error) -> Self {
ModelError {
side: Some(Box::new(error)),
}
}
}