mendeleev/group/array.rs
1use super::Group;
2use super::N_GROUPS;
3
4/// Array containing all periodic table groups, ordered by group number
5///
6/// ```
7/// use mendeleev::Group;
8/// use mendeleev::ALL_GROUPS;
9/// use mendeleev::N_GROUPS;
10///
11/// for n in 1..=N_GROUPS {
12/// assert_eq!(ALL_GROUPS[n - 1].group_number() as usize, n);
13/// }
14/// ```
15pub const ALL_GROUPS: [Group; N_GROUPS] = [
16 Group::IA,
17 Group::IIA,
18 Group::IIIB,
19 Group::IVB,
20 Group::VB,
21 Group::VIB,
22 Group::VIIB,
23 Group::VIIIB8,
24 Group::VIIIB9,
25 Group::VIIIB10,
26 Group::IB,
27 Group::IIB,
28 Group::IIIA,
29 Group::IVA,
30 Group::VA,
31 Group::VIA,
32 Group::VIIA,
33 Group::VIIIA,
34];
35
36impl Group {
37 /// Slice containing all groups, ordered by group number
38 ///
39 /// ```
40 /// use mendeleev::Group;
41 /// use mendeleev::N_GROUPS;
42 ///
43 /// for n in 1..=N_GROUPS {
44 /// assert_eq!(Group::list()[n - 1].group_number() as usize, n);
45 /// }
46 /// ```
47 pub const fn list() -> &'static [Self] {
48 &ALL_GROUPS
49 }
50
51 /// Returns an iterator that yields all the groups by value, ordered by group number
52 ///
53 /// ```
54 /// use mendeleev::Group;
55 ///
56 /// assert_eq!(Group::iter().next(), Some(Group::IA));
57 /// ```
58 pub fn iter() -> impl Iterator<Item = Self> + Clone {
59 ALL_GROUPS.into_iter()
60 }
61}