mendeleev/element/
array.rs

1use super::Element;
2use super::N_ELEMENTS;
3
4/// Array containing all elements, ordered by atomic number
5///
6/// ```
7/// use mendeleev::Element;
8/// use mendeleev::ALL_ELEMENTS;
9/// use mendeleev::N_ELEMENTS;
10///
11/// for n in 1..=N_ELEMENTS {
12///     assert_eq!(ALL_ELEMENTS[n - 1].atomic_number() as usize, n);
13/// }
14/// ```
15pub const ALL_ELEMENTS: [Element; N_ELEMENTS] = [
16    Element::H,
17    Element::He,
18    Element::Li,
19    Element::Be,
20    Element::B,
21    Element::C,
22    Element::N,
23    Element::O,
24    Element::F,
25    Element::Ne,
26    Element::Na,
27    Element::Mg,
28    Element::Al,
29    Element::Si,
30    Element::P,
31    Element::S,
32    Element::Cl,
33    Element::Ar,
34    Element::K,
35    Element::Ca,
36    Element::Sc,
37    Element::Ti,
38    Element::V,
39    Element::Cr,
40    Element::Mn,
41    Element::Fe,
42    Element::Co,
43    Element::Ni,
44    Element::Cu,
45    Element::Zn,
46    Element::Ga,
47    Element::Ge,
48    Element::As,
49    Element::Se,
50    Element::Br,
51    Element::Kr,
52    Element::Rb,
53    Element::Sr,
54    Element::Y,
55    Element::Zr,
56    Element::Nb,
57    Element::Mo,
58    Element::Tc,
59    Element::Ru,
60    Element::Rh,
61    Element::Pd,
62    Element::Ag,
63    Element::Cd,
64    Element::In,
65    Element::Sn,
66    Element::Sb,
67    Element::Te,
68    Element::I,
69    Element::Xe,
70    Element::Cs,
71    Element::Ba,
72    Element::La,
73    Element::Ce,
74    Element::Pr,
75    Element::Nd,
76    Element::Pm,
77    Element::Sm,
78    Element::Eu,
79    Element::Gd,
80    Element::Tb,
81    Element::Dy,
82    Element::Ho,
83    Element::Er,
84    Element::Tm,
85    Element::Yb,
86    Element::Lu,
87    Element::Hf,
88    Element::Ta,
89    Element::W,
90    Element::Re,
91    Element::Os,
92    Element::Ir,
93    Element::Pt,
94    Element::Au,
95    Element::Hg,
96    Element::Tl,
97    Element::Pb,
98    Element::Bi,
99    Element::Po,
100    Element::At,
101    Element::Rn,
102    Element::Fr,
103    Element::Ra,
104    Element::Ac,
105    Element::Th,
106    Element::Pa,
107    Element::U,
108    Element::Np,
109    Element::Pu,
110    Element::Am,
111    Element::Cm,
112    Element::Bk,
113    Element::Cf,
114    Element::Es,
115    Element::Fm,
116    Element::Md,
117    Element::No,
118    Element::Lr,
119    Element::Rf,
120    Element::Db,
121    Element::Sg,
122    Element::Bh,
123    Element::Hs,
124    Element::Mt,
125    Element::Ds,
126    Element::Rg,
127    Element::Cn,
128    Element::Nh,
129    Element::Fl,
130    Element::Mc,
131    Element::Lv,
132    Element::Ts,
133    Element::Og,
134];
135
136impl Element {
137    /// Slice containing all elements, ordered by atomic number
138    ///
139    /// ```
140    /// use mendeleev::Element;
141    /// use mendeleev::N_ELEMENTS;
142    ///
143    /// for n in 1..=N_ELEMENTS {
144    ///     assert_eq!(Element::list()[n - 1].atomic_number() as usize, n);
145    /// }
146    /// ```
147    pub const fn list() -> &'static [Self] {
148        &ALL_ELEMENTS
149    }
150
151    /// Returns an iterator that yields all the elements by value, ordered by atomic number
152    ///
153    /// ```
154    /// use mendeleev::Element;
155    ///
156    /// assert_eq!(Element::iter().next(), Some(Element::H));
157    /// ```
158    pub fn iter() -> impl Iterator<Item = Self> + Clone {
159        ALL_ELEMENTS.into_iter()
160    }
161}