use_stoichiometry/
mole_ratio.rs1use std::fmt;
2
3use crate::{StoichiometricCoefficient, StoichiometricRatio, StoichiometryValidationError};
4
5#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
7pub struct MoleRatio(StoichiometricRatio);
8
9impl MoleRatio {
10 pub fn new(
17 numerator: StoichiometricCoefficient,
18 denominator: StoichiometricCoefficient,
19 ) -> Result<Self, StoichiometryValidationError> {
20 Ok(Self(StoichiometricRatio::new(numerator, denominator)?))
21 }
22
23 pub fn from_values(
31 numerator: u32,
32 denominator: u32,
33 ) -> Result<Self, StoichiometryValidationError> {
34 Ok(Self(StoichiometricRatio::from_values(
35 numerator,
36 denominator,
37 )?))
38 }
39
40 #[must_use]
42 pub const fn as_ratio(self) -> StoichiometricRatio {
43 self.0
44 }
45
46 #[must_use]
48 pub const fn numerator(self) -> StoichiometricCoefficient {
49 self.0.numerator()
50 }
51
52 #[must_use]
54 pub const fn denominator(self) -> StoichiometricCoefficient {
55 self.0.denominator()
56 }
57}
58
59impl fmt::Display for MoleRatio {
60 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
61 write!(formatter, "{}", self.0)
62 }
63}