chemistru_elements/
utils.rs

1use core::hint::black_box;
2
3use crate::{ELEMENTS, Element};
4
5#[must_use]
6pub fn element_from_atomic_number(n: u8) -> Option<&'static Element> {
7    ELEMENTS.get(n as usize - 1)
8}
9
10#[must_use]
11pub fn element_from_name(name: &str) -> Option<&'static Element> {
12    let name = {
13        let lowercase = name.to_lowercase();
14
15        match lowercase.as_str() {
16            "aluminum" => "aluminium",
17            "caesium" => "cesium",
18            "sulphur" => "sulfur",
19            _ => name,
20        }
21    };
22
23    ELEMENTS
24        .iter()
25        .find(|&n| n.name().to_lowercase() == name.to_lowercase())
26}
27
28/// # Panics
29///
30/// Panics if element vector is empty (practically impossible)
31pub fn preload_elements() {
32    let a = &ELEMENTS;
33    let b = a.first();
34    let c = b.expect("Elements vec is empty").clone();
35    let _d = black_box(c);
36}