#[derive(Debug)]
pub struct CircuitTemplateError {
context: String,
source: Option<Box<dyn std::error::Error>>,
}
impl CircuitTemplateError {
pub fn new(context: &str) -> Self {
Self {
context: context.into(),
source: None,
}
}
pub fn new_with_source(context: &str, err: Box<dyn std::error::Error>) -> Self {
Self {
context: context.into(),
source: Some(err),
}
}
}
impl std::error::Error for CircuitTemplateError {}
impl std::fmt::Display for CircuitTemplateError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
if let Some(ref err) = self.source {
write!(f, "{}: {}", self.context, err)
} else {
f.write_str(&self.context)
}
}
}
impl From<serde_yaml::Error> for CircuitTemplateError {
fn from(err: serde_yaml::Error) -> Self {
Self::new_with_source("Error deserializing template", err.into())
}
}