1use crate::parse::util::Error;
4
5#[derive(thiserror::Error, Clone, PartialEq, Eq)]
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8pub enum EquationError {
9 #[error("couldn't parse the equation:\n{0}")]
11 #[cfg_attr(feature = "serde", serde(skip))]
12 ParsingError(Error<String>),
13 #[error("this equation is not valid")]
15 IncorrectEquation,
16 #[error("too much input, remaining: {0:?}")]
18 TooMuchInput(String),
19}
20
21impl std::fmt::Debug for EquationError {
22 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
23 std::fmt::Display::fmt(self, f)
24 }
25}
26
27#[cfg(doc)]
29#[allow(unused)]
30use crate::Compound;
31
32#[derive(thiserror::Error, Clone, PartialEq, Eq)]
34#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
35pub enum CompoundError {
36 #[error("couldn't parse the compound:\n{0}")]
38 #[cfg_attr(feature = "serde", serde(skip))]
39 ParsingError(Error<String>),
40 #[error("too much input, remaining: {0:?}")]
42 TooMuchInput(String),
43}
44
45impl std::fmt::Debug for CompoundError {
46 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
47 std::fmt::Display::fmt(self, f)
48 }
49}
50
51#[cfg(doc)]
53#[allow(unused)]
54use crate::Equation;
55
56#[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)]
58#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
59pub enum ConcentrationError {
60 #[error("slice not right size")]
62 WrongSliceSize,
63 #[error("concentration value was NAN")]
65 NAN,
66}
67
68#[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)]
70#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
71pub enum ConcentrationNameError {
72 #[error("compound not found")]
74 NotFound,
75 #[error("concentration value was NAN")]
77 NAN,
78}
79
80#[cfg(all(doc, feature = "balance"))]
82#[allow(unused)]
83use crate::balance::EquationBalancer;
84
85#[cfg(feature = "balance")]
87#[cfg_attr(docsrs, doc(cfg(feature = "balance")))]
88#[derive(Debug, thiserror::Error, Clone, Copy, PartialEq, Eq)]
89#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
90pub enum BalanceError {
91 #[error("the equation is invalid")]
93 InvalidEquation,
94 #[error("equation could not be balanced")]
96 Infeasable,
97}
98
99#[cfg(doc)]
100#[allow(unused)]
101use crate::Element;
102
103#[derive(Debug, thiserror::Error, Clone, PartialEq, Eq)]
105#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
106pub enum ElementError {
107 #[error("Element was not part of periodic table: {0}")]
109 NotInPeriodicTable(String),
110 #[error("The element could not be parsed")]
112 #[cfg_attr(feature = "serde", serde(skip))]
113 ParseError(Error<String>),
114 #[error("too much input, remaining: {0:?}")]
116 TooMuchInput(String),
117}