use_stoichiometry/
error.rs1use std::error::Error;
2use std::fmt;
3
4#[derive(Clone, Debug, Eq, PartialEq)]
6pub enum StoichiometryValidationError {
7 ZeroCoefficient,
9 ZeroRatioDenominator,
11 EmptyLimitingReagentLabel,
13 EmptyExcessReagentLabel,
15 NonFiniteYield,
17 NegativeYield,
19 NonPositiveTheoreticalYield,
21 ExpectedReactant,
23 ExpectedProduct,
25}
26
27impl fmt::Display for StoichiometryValidationError {
28 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
29 match self {
30 Self::ZeroCoefficient => {
31 formatter.write_str("stoichiometric coefficient must be greater than zero")
32 },
33 Self::ZeroRatioDenominator => {
34 formatter.write_str("stoichiometric ratio denominator must be greater than zero")
35 },
36 Self::EmptyLimitingReagentLabel => {
37 formatter.write_str("limiting-reagent label must not be empty")
38 },
39 Self::EmptyExcessReagentLabel => {
40 formatter.write_str("excess-reagent label must not be empty")
41 },
42 Self::NonFiniteYield => formatter.write_str("yield value must be finite"),
43 Self::NegativeYield => formatter.write_str("yield value must not be negative"),
44 Self::NonPositiveTheoreticalYield => {
45 formatter.write_str("theoretical yield must be greater than zero")
46 },
47 Self::ExpectedReactant => formatter.write_str("reaction entry must be a reactant"),
48 Self::ExpectedProduct => formatter.write_str("reaction entry must be a product"),
49 }
50 }
51}
52
53impl Error for StoichiometryValidationError {}