use std::fmt;
use use_chemical_formula::ChemicalFormula;
use use_stoichiometry::StoichiometricCoefficient;
use crate::ReactionTerm;
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Reactant(ReactionTerm);
impl Reactant {
#[must_use]
pub const fn new(term: ReactionTerm) -> Self {
Self(term)
}
#[must_use]
pub const fn as_term(&self) -> &ReactionTerm {
&self.0
}
#[must_use]
pub fn into_term(self) -> ReactionTerm {
self.0
}
#[must_use]
pub const fn coefficient(&self) -> StoichiometricCoefficient {
self.0.coefficient()
}
#[must_use]
pub const fn formula(&self) -> &ChemicalFormula {
self.0.formula()
}
}
impl From<ReactionTerm> for Reactant {
fn from(term: ReactionTerm) -> Self {
Self::new(term)
}
}
impl fmt::Display for Reactant {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(formatter, "{}", self.0)
}
}