chemp 0.9.6

chemical formulas parser
Documentation
/// A chemical element
#[derive(Debug, Copy, Clone, Eq, Hash, PartialEq)]
pub enum ChemicalElement {
    Hydrogen,
    Helium,
    Lithium,
    Beryllium,
    Boron,
    Carbon,
    Nitrogen,
    Oxygen,
    Fluorine,
    Neon,
    Sodium,
    Magnesium,
    Aluminium,
    Silicon,
    Phosphorus,
    Sulfur,
    Chlorine,
    Argon,
    Potassium,
    Calcium,
    Scandium,
    Titanium,
    Vanadium,
    Chromium,
    Manganese,
    Iron,
    Cobalt,
    Nickel,
    Copper,
    Zinc,
    Gallium,
    Germanium,
    Arsenic,
    Selenium,
    Bromine,
    Krypton,
    Rubidium,
    Strontium,
    Yttrium,
    Zirconium,
    Niobium,
    Molybdenum,
    Technetium,
    Ruthenium,
    Rhodium,
    Palladium,
    Silver,
    Cadmium,
    Indium,
    Tin,
    Antimony,
    Tellurium,
    Iodine,
    Xenon,
    Caesium,
    Barium,
    Lanthanum,
    Cerium,
    Praseodymium,
    Neodymium,
    Promethium,
    Samarium,
    Europium,
    Gadolinium,
    Terbium,
    Dysprosium,
    Holmium,
    Erbium,
    Thulium,
    Ytterbium,
    Lutetium,
    Hafnium,
    Tantalum,
    Tungsten,
    Rhenium,
    Osmium,
    Iridium,
    Platinum,
    Gold,
    Mercury,
    Thallium,
    Lead,
    Bismuth,
    Polonium,
    Astatine,
    Radon,
    Francium,
    Radium,
    Actinium,
    Thorium,
    Protactinium,
    Uranium,
    Neptunium,
    Plutonium,
    Americium,
    Curium,
    Berkelium,
    Californium,
    Einsteinium,
    Fermium,
    Mendelevium,
    Nobelium,
    Lawrencium,
    Rutherfordium,
    Dubnium,
    Seaborgium,
    Bohrium,
    Hassium,
    Meitnerium,
    Darmstadtium,
    Roentgenium,
    Copernicium,
    Nihonium,
    Flerovium,
    Moscovium,
    Livermorium,
    Tennessine,
    Oganesson,
}

impl ChemicalElement {
    // get chemical element atomic weight
    pub fn atomic_weight(&self) -> f32 {
        match self {
            Self::Hydrogen => 1.008,
            Self::Helium => 4.002,
            Self::Lithium => 6.94,
            Self::Beryllium => 9.012,
            Self::Boron => 10.81,
            Self::Carbon => 12.011,
            Self::Nitrogen => 14.007,
            Self::Oxygen => 15.999,
            Self::Fluorine => 18.998,
            Self::Neon => 20.1797,
            Self::Sodium => 22.989,
            Self::Magnesium => 24.305,
            Self::Aluminium => 26.981,
            Self::Silicon => 28.085,
            Self::Phosphorus => 30.973,
            Self::Sulfur => 32.06,
            Self::Chlorine => 35.45,
            Self::Argon => 39.95,
            Self::Potassium => 39.0983,
            Self::Calcium => 40.078,
            Self::Scandium => 44.955,
            Self::Titanium => 47.867,
            Self::Vanadium => 50.9415,
            Self::Chromium => 51.9961,
            Self::Manganese => 54.938,
            Self::Iron => 55.845,
            Self::Cobalt => 58.933,
            Self::Nickel => 58.6934,
            Self::Copper => 63.546,
            Self::Zinc => 65.38,
            Self::Gallium => 69.723,
            Self::Germanium => 72.630,
            Self::Arsenic => 74.921,
            Self::Selenium => 78.971,
            Self::Bromine => 79.904,
            Self::Krypton => 83.798,
            Self::Rubidium => 85.4678,
            Self::Strontium => 87.62,
            Self::Yttrium => 88.905,
            Self::Zirconium => 91.224,
            Self::Niobium => 92.906,
            Self::Molybdenum => 95.95,
            Self::Technetium => 97.0,
            Self::Ruthenium => 101.07,
            Self::Rhodium => 102.905,
            Self::Palladium => 106.42,
            Self::Silver => 107.8682,
            Self::Cadmium => 112.414,
            Self::Indium => 114.818,
            Self::Tin => 118.710,
            Self::Antimony => 121.760,
            Self::Tellurium => 127.60,
            Self::Iodine => 126.904,
            Self::Xenon => 131.293,
            Self::Caesium => 132.905,
            Self::Barium => 137.327,
            Self::Lanthanum => 138.905,
            Self::Cerium => 140.116,
            Self::Praseodymium => 140.907,
            Self::Neodymium => 144.242,
            Self::Promethium => 145.0,
            Self::Samarium => 150.36,
            Self::Europium => 151.964,
            Self::Gadolinium => 157.25,
            Self::Terbium => 158.925,
            Self::Dysprosium => 162.500,
            Self::Holmium => 164.930,
            Self::Erbium => 167.259,
            Self::Thulium => 168.934,
            Self::Ytterbium => 173.045,
            Self::Lutetium => 174.9668,
            Self::Hafnium => 178.486,
            Self::Tantalum => 180.947,
            Self::Tungsten => 183.84,
            Self::Rhenium => 186.207,
            Self::Osmium => 190.23,
            Self::Iridium => 192.217,
            Self::Platinum => 195.084,
            Self::Gold => 196.966,
            Self::Mercury => 200.592,
            Self::Thallium => 204.38,
            Self::Lead => 207.2,
            Self::Bismuth => 208.980,
            Self::Polonium => 209.0,
            Self::Astatine => 210.0,
            Self::Radon => 222.0,
            Self::Francium => 223.0,
            Self::Radium => 226.0,
            Self::Actinium => 227.0,
            Self::Thorium => 232.0377,
            Self::Protactinium => 231.035,
            Self::Uranium => 238.028,
            Self::Neptunium => 237.0,
            Self::Plutonium => 244.0,
            Self::Americium => 243.0,
            Self::Curium => 247.0,
            Self::Berkelium => 247.0,
            Self::Californium => 251.0,
            Self::Einsteinium => 252.0,
            Self::Fermium => 257.0,
            Self::Mendelevium => 258.0,
            Self::Nobelium => 259.0,
            Self::Lawrencium => 262.0,
            Self::Rutherfordium => 267.0,
            Self::Dubnium => 270.0,
            Self::Seaborgium => 269.0,
            Self::Bohrium => 270.0,
            Self::Hassium => 270.0,
            Self::Meitnerium => 278.0,
            Self::Darmstadtium => 281.0,
            Self::Roentgenium => 281.0,
            Self::Copernicium => 285.0,
            Self::Nihonium => 286.0,
            Self::Flerovium => 289.0,
            Self::Moscovium => 289.0,
            Self::Livermorium => 293.0,
            Self::Tennessine => 293.0,
            Self::Oganesson => 294.0,
        }
    }

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