use std::error::Error;
use std::fmt;
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum StoichiometryValidationError {
ZeroCoefficient,
ZeroRatioDenominator,
EmptyLimitingReagentLabel,
EmptyExcessReagentLabel,
NonFiniteYield,
NegativeYield,
NonPositiveTheoreticalYield,
ExpectedReactant,
ExpectedProduct,
}
impl fmt::Display for StoichiometryValidationError {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::ZeroCoefficient => {
formatter.write_str("stoichiometric coefficient must be greater than zero")
},
Self::ZeroRatioDenominator => {
formatter.write_str("stoichiometric ratio denominator must be greater than zero")
},
Self::EmptyLimitingReagentLabel => {
formatter.write_str("limiting-reagent label must not be empty")
},
Self::EmptyExcessReagentLabel => {
formatter.write_str("excess-reagent label must not be empty")
},
Self::NonFiniteYield => formatter.write_str("yield value must be finite"),
Self::NegativeYield => formatter.write_str("yield value must not be negative"),
Self::NonPositiveTheoreticalYield => {
formatter.write_str("theoretical yield must be greater than zero")
},
Self::ExpectedReactant => formatter.write_str("reaction entry must be a reactant"),
Self::ExpectedProduct => formatter.write_str("reaction entry must be a product"),
}
}
}
impl Error for StoichiometryValidationError {}