1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
use std::fmt;

/// Complete and up-to-date set of atomic symbols.
#[derive(Debug,PartialEq)]
pub enum Element {
//  0   1   2   3   4   5   6   7   8   9
        H,  He, Li, Be, B,  C,  N,  O,  F,  // 0
    Ne, Na, Mg, Al, Si, P,  S,  Cl, Ar, K,  // 1
    Ca, Sc, Ti, V,  Cr, Mn, Fe, Co, Ni, Cu, // 2
    Zn, Ga, Ge, As, Se, Br, Kr, Rb, Sr, Y,  // 3
    Zr, Nb, Mo, Tc, Ru, Rh, Pd, Ag, Cd, In, // 4
    Sn, Sb, Te, I,  Xe, Cs, Ba, La, Ce, Pr, // 5
    Nd, Pm, Sm, Eu, Gd, Tb, Dy, Ho, Er, Tm, // 6
    Yb, Lu, Hf, Ta, W,  Re, Os, Ir, Pt, Au, // 7
    Hg, Tl, Pb, Bi, Po, At, Rn, Fr, Ra, Ac, // 8
    Th, Pa, U,  Np, Pu, Am, Cm, Bk, Cf, Es, // 9
    Fm, Md, No, Lr, Rf, Db, Sg, Bh, Hs, Mt, // 10
    Ds, Rg, Cn, Nh, Fl, Mc, Lv, Ts, Og      // 11
}

impl fmt::Display for Element {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{}", match self {
            Element::Ac => "Ac",
            Element::Ag => "Ag",
            Element::Al => "Al",
            Element::Am => "Am",
            Element::Ar => "Ar",
            Element::As => "As",
            Element::At => "At",
            Element::Au => "Au",
            Element::B  => "B",
            Element::Ba => "Ba",
            Element::Be => "Be",
            Element::Bh => "Bh",
            Element::Bi => "Bi",
            Element::Bk => "Bk",
            Element::Br => "Br",
            Element::C  => "C",
            Element::Ca => "Ca",
            Element::Cd => "Cd",
            Element::Ce => "Ce",
            Element::Cf => "Cf",
            Element::Cl => "Cl",
            Element::Cm => "Cm",
            Element::Cn => "Cn",
            Element::Co => "Co",
            Element::Cr => "Cr",
            Element::Cs => "Ac",
            Element::Cu => "Cu",
            Element::Db => "Db",
            Element::Ds => "Ds",
            Element::Dy => "Dy",
            Element::Er => "Er",
            Element::Es => "Es",
            Element::Eu => "Eu",
            Element::F  => "F",
            Element::Fe => "Fe",
            Element::Fl => "Fl",
            Element::Fm => "Fm",
            Element::Fr => "Fr",
            Element::Ga => "Ga",
            Element::Gd => "Gd",
            Element::Ge => "Ge",
            Element::H  => "H",
            Element::He => "He",
            Element::Hf => "Hf",
            Element::Hg => "Hg",
            Element::Ho => "Ho",
            Element::Hs => "Hs",
            Element::I  => "I",
            Element::In => "In",
            Element::Ir => "Ir",
            Element::K  => "K",
            Element::Kr => "Kr",
            Element::La => "La",
            Element::Li => "Li",
            Element::Lr => "Lr",
            Element::Lu => "Lu",
            Element::Lv => "Lv",
            Element::Mc => "Mc",
            Element::Md => "Md",
            Element::Mg => "Mg",
            Element::Mn => "Mn",
            Element::Mo => "Mo",
            Element::Mt => "Mt",
            Element::Na => "Na",
            Element::Nb => "Nb",
            Element::Nd => "Nd",
            Element::N  => "N",
            Element::Ne => "Ne",
            Element::Nh => "Nh",
            Element::Ni => "Ni",
            Element::No => "No",
            Element::Np => "Np",
            Element::O  => "O",
            Element::Os => "Os",
            Element::Og => "Og",
            Element::P  => "P",
            Element::Pa => "Pa",
            Element::Pb => "Pb",
            Element::Pd => "Pd",
            Element::Pm => "Pm",
            Element::Po => "Po",
            Element::Pr => "Pr",
            Element::Pt => "Pt",
            Element::Pu => "Pu",
            Element::Ra => "Ra",
            Element::Rb => "Rb",
            Element::Re => "Re",
            Element::Rf => "Rf",
            Element::Rg => "Rg",
            Element::Rh => "Rh",
            Element::Rn => "Rn",
            Element::Ru => "Ru",
            Element::S  => "S",
            Element::Sb => "Sb",
            Element::Sc => "Sc",
            Element::Se => "Se",
            Element::Sg => "Sg",
            Element::Si => "Si",
            Element::Sm => "Sm",
            Element::Sn => "Sn",
            Element::Sr => "Sr",
            Element::Ta => "Ta",
            Element::Tb => "Tb",
            Element::Tc => "Tc",
            Element::Te => "Te",
            Element::Th => "Th",
            Element::Ti => "Ti",
            Element::Tl => "Tl",
            Element::Tm => "Tm",
            Element::Ts => "Ts",
            Element::U  => "U",
            Element::V  => "V",
            Element::W  => "W",
            Element::Xe => "Xe",
            Element::Y  => "Y",
            Element::Yb => "Yb",
            Element::Zn => "Zn",
            Element::Zr => "Zr"
        })
    }
}