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}