impl super::RelativeAtomicMass for super::Isotope {
#[inline]
#[allow(clippy::too_many_lines)]
fn relative_atomic_mass(&self) -> f64 {
match self {
Self::H(isotope) => isotope.relative_atomic_mass(),
Self::He(isotope) => isotope.relative_atomic_mass(),
Self::Li(isotope) => isotope.relative_atomic_mass(),
Self::Be(isotope) => isotope.relative_atomic_mass(),
Self::B(isotope) => isotope.relative_atomic_mass(),
Self::C(isotope) => isotope.relative_atomic_mass(),
Self::N(isotope) => isotope.relative_atomic_mass(),
Self::O(isotope) => isotope.relative_atomic_mass(),
Self::F(isotope) => isotope.relative_atomic_mass(),
Self::Ne(isotope) => isotope.relative_atomic_mass(),
Self::Na(isotope) => isotope.relative_atomic_mass(),
Self::Mg(isotope) => isotope.relative_atomic_mass(),
Self::Al(isotope) => isotope.relative_atomic_mass(),
Self::Si(isotope) => isotope.relative_atomic_mass(),
Self::P(isotope) => isotope.relative_atomic_mass(),
Self::S(isotope) => isotope.relative_atomic_mass(),
Self::Cl(isotope) => isotope.relative_atomic_mass(),
Self::Ar(isotope) => isotope.relative_atomic_mass(),
Self::K(isotope) => isotope.relative_atomic_mass(),
Self::Ca(isotope) => isotope.relative_atomic_mass(),
Self::Sc(isotope) => isotope.relative_atomic_mass(),
Self::Ti(isotope) => isotope.relative_atomic_mass(),
Self::V(isotope) => isotope.relative_atomic_mass(),
Self::Cr(isotope) => isotope.relative_atomic_mass(),
Self::Mn(isotope) => isotope.relative_atomic_mass(),
Self::Fe(isotope) => isotope.relative_atomic_mass(),
Self::Co(isotope) => isotope.relative_atomic_mass(),
Self::Ni(isotope) => isotope.relative_atomic_mass(),
Self::Cu(isotope) => isotope.relative_atomic_mass(),
Self::Zn(isotope) => isotope.relative_atomic_mass(),
Self::Ga(isotope) => isotope.relative_atomic_mass(),
Self::Ge(isotope) => isotope.relative_atomic_mass(),
Self::As(isotope) => isotope.relative_atomic_mass(),
Self::Se(isotope) => isotope.relative_atomic_mass(),
Self::Br(isotope) => isotope.relative_atomic_mass(),
Self::Kr(isotope) => isotope.relative_atomic_mass(),
Self::Rb(isotope) => isotope.relative_atomic_mass(),
Self::Sr(isotope) => isotope.relative_atomic_mass(),
Self::Y(isotope) => isotope.relative_atomic_mass(),
Self::Zr(isotope) => isotope.relative_atomic_mass(),
Self::Nb(isotope) => isotope.relative_atomic_mass(),
Self::Mo(isotope) => isotope.relative_atomic_mass(),
Self::Tc(isotope) => isotope.relative_atomic_mass(),
Self::Ru(isotope) => isotope.relative_atomic_mass(),
Self::Rh(isotope) => isotope.relative_atomic_mass(),
Self::Pd(isotope) => isotope.relative_atomic_mass(),
Self::Ag(isotope) => isotope.relative_atomic_mass(),
Self::Cd(isotope) => isotope.relative_atomic_mass(),
Self::In(isotope) => isotope.relative_atomic_mass(),
Self::Sn(isotope) => isotope.relative_atomic_mass(),
Self::Sb(isotope) => isotope.relative_atomic_mass(),
Self::Te(isotope) => isotope.relative_atomic_mass(),
Self::I(isotope) => isotope.relative_atomic_mass(),
Self::Xe(isotope) => isotope.relative_atomic_mass(),
Self::Cs(isotope) => isotope.relative_atomic_mass(),
Self::Ba(isotope) => isotope.relative_atomic_mass(),
Self::La(isotope) => isotope.relative_atomic_mass(),
Self::Ce(isotope) => isotope.relative_atomic_mass(),
Self::Pr(isotope) => isotope.relative_atomic_mass(),
Self::Nd(isotope) => isotope.relative_atomic_mass(),
Self::Pm(isotope) => isotope.relative_atomic_mass(),
Self::Sm(isotope) => isotope.relative_atomic_mass(),
Self::Eu(isotope) => isotope.relative_atomic_mass(),
Self::Gd(isotope) => isotope.relative_atomic_mass(),
Self::Tb(isotope) => isotope.relative_atomic_mass(),
Self::Dy(isotope) => isotope.relative_atomic_mass(),
Self::Ho(isotope) => isotope.relative_atomic_mass(),
Self::Er(isotope) => isotope.relative_atomic_mass(),
Self::Tm(isotope) => isotope.relative_atomic_mass(),
Self::Yb(isotope) => isotope.relative_atomic_mass(),
Self::Lu(isotope) => isotope.relative_atomic_mass(),
Self::Hf(isotope) => isotope.relative_atomic_mass(),
Self::Ta(isotope) => isotope.relative_atomic_mass(),
Self::W(isotope) => isotope.relative_atomic_mass(),
Self::Re(isotope) => isotope.relative_atomic_mass(),
Self::Os(isotope) => isotope.relative_atomic_mass(),
Self::Ir(isotope) => isotope.relative_atomic_mass(),
Self::Pt(isotope) => isotope.relative_atomic_mass(),
Self::Au(isotope) => isotope.relative_atomic_mass(),
Self::Hg(isotope) => isotope.relative_atomic_mass(),
Self::Tl(isotope) => isotope.relative_atomic_mass(),
Self::Pb(isotope) => isotope.relative_atomic_mass(),
Self::Bi(isotope) => isotope.relative_atomic_mass(),
Self::Po(isotope) => isotope.relative_atomic_mass(),
Self::At(isotope) => isotope.relative_atomic_mass(),
Self::Rn(isotope) => isotope.relative_atomic_mass(),
Self::Fr(isotope) => isotope.relative_atomic_mass(),
Self::Ra(isotope) => isotope.relative_atomic_mass(),
Self::Ac(isotope) => isotope.relative_atomic_mass(),
Self::Th(isotope) => isotope.relative_atomic_mass(),
Self::Pa(isotope) => isotope.relative_atomic_mass(),
Self::U(isotope) => isotope.relative_atomic_mass(),
Self::Np(isotope) => isotope.relative_atomic_mass(),
Self::Pu(isotope) => isotope.relative_atomic_mass(),
Self::Am(isotope) => isotope.relative_atomic_mass(),
Self::Cm(isotope) => isotope.relative_atomic_mass(),
Self::Bk(isotope) => isotope.relative_atomic_mass(),
Self::Cf(isotope) => isotope.relative_atomic_mass(),
Self::Es(isotope) => isotope.relative_atomic_mass(),
Self::Fm(isotope) => isotope.relative_atomic_mass(),
Self::Md(isotope) => isotope.relative_atomic_mass(),
Self::No(isotope) => isotope.relative_atomic_mass(),
Self::Lr(isotope) => isotope.relative_atomic_mass(),
Self::Rf(isotope) => isotope.relative_atomic_mass(),
Self::Db(isotope) => isotope.relative_atomic_mass(),
Self::Sg(isotope) => isotope.relative_atomic_mass(),
Self::Bh(isotope) => isotope.relative_atomic_mass(),
Self::Hs(isotope) => isotope.relative_atomic_mass(),
Self::Mt(isotope) => isotope.relative_atomic_mass(),
Self::Ds(isotope) => isotope.relative_atomic_mass(),
Self::Rg(isotope) => isotope.relative_atomic_mass(),
Self::Cn(isotope) => isotope.relative_atomic_mass(),
Self::Nh(isotope) => isotope.relative_atomic_mass(),
Self::Fl(isotope) => isotope.relative_atomic_mass(),
Self::Mc(isotope) => isotope.relative_atomic_mass(),
Self::Lv(isotope) => isotope.relative_atomic_mass(),
Self::Ts(isotope) => isotope.relative_atomic_mass(),
Self::Og(isotope) => isotope.relative_atomic_mass(),
}
}
}
#[cfg(test)]
mod tests {
use strum::IntoEnumIterator;
use crate::isotopes::RelativeAtomicMass;
#[test]
fn test_relative_atomic_mass() {
for element in crate::Element::iter() {
let isotopes = element.isotopes();
for isotope in isotopes {
let mass = isotope.relative_atomic_mass();
assert!(
mass > 0.0,
"Relative atomic mass for isotope {isotope:?} should be positive",
);
assert!(
mass < 300.0,
"Relative atomic mass for isotope {isotope:?} should be reasonable (< 300)",
);
}
}
}
}