use crate::node::NodeIdx;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(serde::Deserialize, serde::Serialize)]
#[derive(displaydoc::Display, thiserror::Error)]
pub enum Error {
Io(ioe::IoError),
GraphvizParse(String),
CycleDetected { path: Vec<NodeIdx> },
ExpectedBranchNode(NodeIdx),
ExpectedLeafNode(NodeIdx),
ExpectedRootNode(NodeIdx),
ParentNotFound { node_idx: NodeIdx, parent_idx: Option<NodeIdx> },
ChildNotFound { node_idx: NodeIdx, child_idx: NodeIdx },
NodeNotFound(NodeIdx),
ExpectedSingleParent { fidx: NodeIdx, got: usize },
ExpectedGssTop(NodeIdx),
}
impl From<std::io::Error> for Error {
fn from(err: std::io::Error) -> Self {
Self::Io(ioe::IoError::from(err))
}
}