readcon_core/
helpers.rs

1// TODO(rg): Drop the comparisons in matter, integrate with readcon
2pub fn symbol_to_atomic_number(symbol: &str) -> u64 {
3    match symbol {
4        "H" => 1,
5        "He" => 2,
6        "Li" => 3,
7        "Be" => 4,
8        "B" => 5,
9        "C" => 6,
10        "N" => 7,
11        "O" => 8,
12        "F" => 9,
13        "Ne" => 10,
14        "Na" => 11,
15        "Mg" => 12,
16        "Al" => 13,
17        "Si" => 14,
18        "P" => 15,
19        "S" => 16,
20        "Cl" => 17,
21        "Ar" => 18,
22        "K" => 19,
23        "Ca" => 20,
24        "Sc" => 21,
25        "Ti" => 22,
26        "V" => 23,
27        "Cr" => 24,
28        "Mn" => 25,
29        "Fe" => 26,
30        "Co" => 27,
31        "Ni" => 28,
32        "Cu" => 29,
33        "Zn" => 30,
34        "Ga" => 31,
35        "Ge" => 32,
36        "As" => 33,
37        "Se" => 34,
38        "Br" => 35,
39        "Kr" => 36,
40        "Rb" => 37,
41        "Sr" => 38,
42        "Y" => 39,
43        "Zr" => 40,
44        "Nb" => 41,
45        "Mo" => 42,
46        "Tc" => 43,
47        "Ru" => 44,
48        "Rh" => 45,
49        "Pd" => 46,
50        "Ag" => 47,
51        "Cd" => 48,
52        "In" => 49,
53        "Sn" => 50,
54        "Sb" => 51,
55        "Te" => 52,
56        "I" => 53,
57        "Xe" => 54,
58        "Cs" => 55,
59        "Ba" => 56,
60        "La" => 57,
61        "Ce" => 58,
62        "Pr" => 59,
63        "Nd" => 60,
64        "Pm" => 61,
65        "Sm" => 62,
66        "Eu" => 63,
67        "Gd" => 64,
68        "Tb" => 65,
69        "Dy" => 66,
70        "Ho" => 67,
71        "Er" => 68,
72        "Tm" => 69,
73        "Yb" => 70,
74        "Lu" => 71,
75        "Hf" => 72,
76        "Ta" => 73,
77        "W" => 74,
78        "Re" => 75,
79        "Os" => 76,
80        "Ir" => 77,
81        "Pt" => 78,
82        "Au" => 79,
83        "Hg" => 80,
84        "Tl" => 81,
85        "Pb" => 82,
86        "Bi" => 83,
87        "Po" => 84,
88        "At" => 85,
89        "Rn" => 86,
90        "Fr" => 87,
91        "Ra" => 88,
92        "Ac" => 89,
93        "Th" => 90,
94        "Pa" => 91,
95        "U" => 92,
96        _ => 0, // Unknown
97    }
98}
99
100/// Converts an atomic number to its corresponding chemical symbol.
101pub fn atomic_number_to_symbol(atomic_number: u64) -> &'static str {
102    match atomic_number {
103        1 => "H",
104        2 => "He",
105        3 => "Li",
106        4 => "Be",
107        5 => "B",
108        6 => "C",
109        7 => "N",
110        8 => "O",
111        9 => "F",
112        10 => "Ne",
113        11 => "Na",
114        12 => "Mg",
115        13 => "Al",
116        14 => "Si",
117        15 => "P",
118        16 => "S",
119        17 => "Cl",
120        18 => "Ar",
121        19 => "K",
122        20 => "Ca",
123        21 => "Sc",
124        22 => "Ti",
125        23 => "V",
126        24 => "Cr",
127        25 => "Mn",
128        26 => "Fe",
129        27 => "Co",
130        28 => "Ni",
131        29 => "Cu",
132        30 => "Zn",
133        31 => "Ga",
134        32 => "Ge",
135        33 => "As",
136        34 => "Se",
137        35 => "Br",
138        36 => "Kr",
139        37 => "Rb",
140        38 => "Sr",
141        39 => "Y",
142        40 => "Zr",
143        41 => "Nb",
144        42 => "Mo",
145        43 => "Tc",
146        44 => "Ru",
147        45 => "Rh",
148        46 => "Pd",
149        47 => "Ag",
150        48 => "Cd",
151        49 => "In",
152        50 => "Sn",
153        51 => "Sb",
154        52 => "Te",
155        53 => "I",
156        54 => "Xe",
157        55 => "Cs",
158        56 => "Ba",
159        57 => "La",
160        58 => "Ce",
161        59 => "Pr",
162        60 => "Nd",
163        61 => "Pm",
164        62 => "Sm",
165        63 => "Eu",
166        64 => "Gd",
167        65 => "Tb",
168        66 => "Dy",
169        67 => "Ho",
170        68 => "Er",
171        69 => "Tm",
172        70 => "Yb",
173        71 => "Lu",
174        72 => "Hf",
175        73 => "Ta",
176        74 => "W",
177        75 => "Re",
178        76 => "Os",
179        77 => "Ir",
180        78 => "Pt",
181        79 => "Au",
182        80 => "Hg",
183        81 => "Tl",
184        82 => "Pb",
185        83 => "Bi",
186        84 => "Po",
187        85 => "At",
188        86 => "Rn",
189        87 => "Fr",
190        88 => "Ra",
191        89 => "Ac",
192        90 => "Th",
193        91 => "Pa",
194        92 => "U",
195        _ => "X", // Represents an unknown element
196    }
197}