impl crate::Element {
#[must_use]
#[allow(clippy::too_many_lines)]
pub fn name(&self) -> &str {
match self {
Self::H => "Hydrogen",
Self::He => "Helium",
Self::Li => "Lithium",
Self::Be => "Beryllium",
Self::B => "Boron",
Self::C => "Carbon",
Self::N => "Nitrogen",
Self::O => "Oxygen",
Self::F => "Fluorine",
Self::Ne => "Neon",
Self::Na => "Sodium",
Self::Mg => "Magnesium",
Self::Al => "Aluminium",
Self::Si => "Silicon",
Self::P => "Phosphorus",
Self::S => "Sulfur",
Self::Cl => "Chlorine",
Self::Ar => "Argon",
Self::K => "Potassium",
Self::Ca => "Calcium",
Self::Sc => "Scandium",
Self::Ti => "Titanium",
Self::V => "Vanadium",
Self::Cr => "Chromium",
Self::Mn => "Manganese",
Self::Fe => "Iron",
Self::Co => "Cobalt",
Self::Ni => "Nickel",
Self::Cu => "Copper",
Self::Zn => "Zinc",
Self::Ga => "Gallium",
Self::Ge => "Germanium",
Self::As => "Arsenic",
Self::Se => "Selenium",
Self::Br => "Bromine",
Self::Kr => "Krypton",
Self::Rb => "Rubidium",
Self::Sr => "Strontium",
Self::Y => "Yttrium",
Self::Zr => "Zirconium",
Self::Nb => "Niobium",
Self::Mo => "Molybdenum",
Self::Tc => "Technetium",
Self::Ru => "Ruthenium",
Self::Rh => "Rhodium",
Self::Pd => "Palladium",
Self::Ag => "Silver",
Self::Cd => "Cadmium",
Self::In => "Indium",
Self::Sn => "Tin",
Self::Sb => "Antimony",
Self::Te => "Tellurium",
Self::I => "Iodine",
Self::Xe => "Xenon",
Self::Cs => "Caesium",
Self::Ba => "Barium",
Self::La => "Lanthanum",
Self::Ce => "Cerium",
Self::Pr => "Praseodymium",
Self::Nd => "Neodymium",
Self::Pm => "Promethium",
Self::Sm => "Samarium",
Self::Eu => "Europium",
Self::Gd => "Gadolinium",
Self::Tb => "Terbium",
Self::Dy => "Dysprosium",
Self::Ho => "Holmium",
Self::Er => "Erbium",
Self::Tm => "Thulium",
Self::Yb => "Ytterbium",
Self::Lu => "Lutetium",
Self::Hf => "Hafnium",
Self::Ta => "Tantalum",
Self::W => "Tungsten",
Self::Re => "Rhenium",
Self::Os => "Osmium",
Self::Ir => "Iridium",
Self::Pt => "Platinum",
Self::Au => "Gold",
Self::Hg => "Mercury",
Self::Tl => "Thallium",
Self::Pb => "Lead",
Self::Bi => "Bismuth",
Self::Po => "Polonium",
Self::At => "Astatine",
Self::Rn => "Radon",
Self::Fr => "Francium",
Self::Ra => "Radium",
Self::Ac => "Actinium",
Self::Th => "Thorium",
Self::Pa => "Protactinium",
Self::U => "Uranium",
Self::Np => "Neptunium",
Self::Pu => "Plutonium",
Self::Am => "Americium",
Self::Cm => "Curium",
Self::Bk => "Berkelium",
Self::Cf => "Californium",
Self::Es => "Einsteinium",
Self::Fm => "Fermium",
Self::Md => "Mendelevium",
Self::No => "Nobelium",
Self::Lr => "Lawrencium",
Self::Rf => "Rutherfordium",
Self::Db => "Dubnium",
Self::Sg => "Seaborgium",
Self::Bh => "Bohrium",
Self::Hs => "Hassium",
Self::Mt => "Meitnerium",
Self::Ds => "Darmstadtium",
Self::Rg => "Roentgenium",
Self::Cn => "Copernicium",
Self::Nh => "Nihonium",
Self::Fl => "Flerovium",
Self::Mc => "Moscovium",
Self::Lv => "Livermorium",
Self::Ts => "Tennessine",
Self::Og => "Oganesson",
}
}
}
#[cfg(test)]
mod tests {
use strum::IntoEnumIterator;
#[test]
fn test_name() {
for element in crate::Element::iter() {
let name = element.name();
assert!(!name.is_empty(), "Name should not be empty for {element:?}");
assert!(
name.chars().next().unwrap().is_uppercase(),
"Name should start with uppercase letter for {element:?}",
);
}
}
}