use crate::parse::util::Error;
#[derive(thiserror::Error, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum EquationError {
#[error("couldn't parse the equation:\n{0}")]
#[cfg_attr(feature = "serde", serde(skip))]
ParsingError(Error<String>),
#[error("this equation is not valid")]
IncorrectEquation,
#[error("too much input, remaining: {0:?}")]
TooMuchInput(String),
}
impl std::fmt::Debug for EquationError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self, f)
}
}
#[cfg(doc)]
#[allow(unused)]
use crate::Compound;
#[derive(thiserror::Error, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum CompoundError {
#[error("couldn't parse the compound:\n{0}")]
#[cfg_attr(feature = "serde", serde(skip))]
ParsingError(Error<String>),
#[error("too much input, remaining: {0:?}")]
TooMuchInput(String),
}
impl std::fmt::Debug for CompoundError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self, f)
}
}
#[cfg(doc)]
#[allow(unused)]
use crate::Equation;
#[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ConcentrationError {
#[error("slice not right size")]
WrongSliceSize,
#[error("concentration value was NAN")]
NAN,
}
#[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ConcentrationNameError {
#[error("compound not found")]
NotFound,
#[error("concentration value was NAN")]
NAN,
}
#[cfg(all(doc, feature = "balance"))]
#[allow(unused)]
use crate::balance::EquationBalancer;
#[cfg(feature = "balance")]
#[cfg_attr(docsrs, doc(cfg(feature = "balance")))]
#[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum BalanceError {
#[error("the equation is invalid")]
InvalidEquation,
#[error("equation could not be balanced")]
Infeasable,
}
#[cfg(doc)]
#[allow(unused)]
use crate::Element;
#[derive(Debug, thiserror::Error, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ElementError {
#[error("Element was not part of periodic table: {0}")]
NotInPeriodicTable(String),
#[error("The element could not be parsed")]
#[cfg_attr(feature = "serde", serde(skip))]
ParseError(Error<String>),
#[error("too much input, remaining: {0:?}")]
TooMuchInput(String),
}