//! The Error types produced by Taffy. #[cfg(feature = "std")] use core::fmt::{Display, Formatter, Result}; use crate::node::Node; /// The error Taffy generates on invalid operations pub type TaffyResult = core::result::Result; /// An error that occurs while trying to access or modify a [`Node`]'s children by index. #[derive(Debug)] pub enum TaffyError { /// The parent [`Node`] does not have a child at `child_index`. It only has `child_count` children ChildIndexOutOfBounds { /// The parent node whose child was being looked up parent: Node, /// The index that was looked up child_index: usize, /// The total number of children the parent has child_count: usize, }, /// The parent [`Node`] was not found in the [`Taffy`](crate::Taffy) instance. InvalidParentNode(Node), /// The child [`Node`] was not found in the [`Taffy`](crate::Taffy) instance. InvalidChildNode(Node), /// The supplied [`Node`] was not found in the [`Taffy`](crate::Taffy) instance. InvalidInputNode(Node), } #[cfg(feature = "std")] impl Display for TaffyError { fn fmt(&self, f: &mut Formatter) -> Result { match self { TaffyError::ChildIndexOutOfBounds { parent, child_index, child_count } => write!( f, "Index (is {}) should be < child_count ({}) for parent node {:?}", child_index, child_count, parent ), TaffyError::InvalidParentNode(parent) => { write!(f, "Parent Node {:?} is not in the Taffy instance", parent) } TaffyError::InvalidChildNode(child) => write!(f, "Child Node {:?} is not in the Taffy instance", child), TaffyError::InvalidInputNode(node) => write!(f, "Supplied Node {:?} is not in the Taffy instance", node), } } } #[cfg(feature = "std")] impl std::error::Error for TaffyError {}