use std::error::Error;
use std::fmt;
pub type ExecutionResult = (Vec<String>, std::collections::HashMap<String, Vec<String>>);
pub type ParsingResult = Result<ExecutionResult, ParsingError>;
#[derive(Debug)]
pub enum ParsingError {
InvalidArchitecture(String),
CircularDependency(String),
MissingConnection(String),
IncompatibleDimensions {
layer1: String,
layer2: String,
},
}
impl fmt::Display for ParsingError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ParsingError::InvalidArchitecture(msg) => write!(f, "Invalid architecture: {}", msg),
ParsingError::CircularDependency(msg) => write!(f, "Circular dependency: {}", msg),
ParsingError::MissingConnection(msg) => write!(f, "Missing connection: {}", msg),
ParsingError::IncompatibleDimensions { layer1, layer2 } => write!(
f,
"Incompatible dimensions between {} and {}",
layer1, layer2
),
}
}
}
impl Error for ParsingError {}