use std::{fmt, io}; use crate::allocator::NodePtr; use crate::cost::Cost; #[derive(Debug, Clone, PartialEq, Eq)] pub struct EvalErr(pub NodePtr, pub String); #[derive(Debug, PartialEq, Eq)] pub struct Reduction(pub Cost, pub NodePtr); pub type Response = Result; impl fmt::Display for EvalErr { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "Error at {:?}: {}", self.0, self.1) } } impl std::error::Error for EvalErr {} impl From for io::Error { fn from(v: EvalErr) -> Self { Self::new(io::ErrorKind::Other, v.1) } }