1#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
37#[non_exhaustive]
38pub enum Element {
39 Hydrogen,
41 Helium,
43 Lithium,
45 Beryllium,
47 Boron,
49 Carbon,
51 Nitrogen,
53 Oxygen,
55 Fluorine,
57 Neon,
59 Sodium,
61 Magnesium,
63 Aluminium,
65 Silicon,
67 Phosphorus,
69 Sulfur,
71 Chlorine,
73 Argon,
75 Potassium,
77 Calcium,
79 Scandium,
81 Titanium,
83 Vanadium,
85 Chromium,
87 Manganese,
89 Iron,
91 Cobalt,
93 Nickel,
95 Copper,
97 Zinc,
99 Gallium,
101 Germanium,
103 Arsenic,
105 Selenium,
107 Bromine,
109 Krypton,
111 Rubidium,
113 Strontium,
115 Yttrium,
117 Zirconium,
119 Niobium,
121 Molybdenum,
123 Technetium,
125 Ruthenium,
127 Rhodium,
129 Palladium,
131 Silver,
133 Cadmium,
135 Indium,
137 Tin,
139 Antimony,
141 Tellurium,
143 Iodine,
145 Xenon,
147 Caesium,
149 Barium,
151 Lanthanum,
153 Cerium,
155 Praseodymium,
157 Neodymium,
159 Promethium,
161 Samarium,
163 Europium,
165 Gadolinium,
167 Terbium,
169 Dysprosium,
171 Holmium,
173 Erbium,
175 Thulium,
177 Ytterbium,
179 Lutetium,
181 Hafnium,
183 Tantalum,
185 Tungsten,
187 Rhenium,
189 Osmium,
191 Iridium,
193 Platinum,
195 Gold,
197 Mercury,
199 Thallium,
201 Lead,
203 Bismuth,
205 Polonium,
207 Astatine,
209 Radon,
211 Francium,
213 Radium,
215 Actinium,
217 Thorium,
219 Protactinium,
221 Uranium,
223 Neptunium,
225 Plutonium,
227 Americium,
229 Curium,
231 Berkelium,
233 Californium,
235 Einsteinium,
237 Fermium,
239 Mendelevium,
241 Nobelium,
243 Lawrencium,
245 Rutherfordium,
247 Dubnium,
249 Seaborgium,
251 Bohrium,
253 Hassium,
255 Meitnerium,
257 Darmstadtium,
259 Roentgenium,
261 Copernicium,
263 Nihonium,
265 Flerovium,
267 Moscovium,
269 Livermorium,
271 Tennessine,
273 Oganesson,
275}
276
277impl Element {
278 pub(crate) const MAX_ATOMIC_NUMBER: u32 = 118;
280
281 const ELEMENTS: [Self; 118] = [
283 Self::Hydrogen,
284 Self::Helium,
285 Self::Lithium,
286 Self::Beryllium,
287 Self::Boron,
288 Self::Carbon,
289 Self::Nitrogen,
290 Self::Oxygen,
291 Self::Fluorine,
292 Self::Neon,
293 Self::Sodium,
294 Self::Magnesium,
295 Self::Aluminium,
296 Self::Silicon,
297 Self::Phosphorus,
298 Self::Sulfur,
299 Self::Chlorine,
300 Self::Argon,
301 Self::Potassium,
302 Self::Calcium,
303 Self::Scandium,
304 Self::Titanium,
305 Self::Vanadium,
306 Self::Chromium,
307 Self::Manganese,
308 Self::Iron,
309 Self::Cobalt,
310 Self::Nickel,
311 Self::Copper,
312 Self::Zinc,
313 Self::Gallium,
314 Self::Germanium,
315 Self::Arsenic,
316 Self::Selenium,
317 Self::Bromine,
318 Self::Krypton,
319 Self::Rubidium,
320 Self::Strontium,
321 Self::Yttrium,
322 Self::Zirconium,
323 Self::Niobium,
324 Self::Molybdenum,
325 Self::Technetium,
326 Self::Ruthenium,
327 Self::Rhodium,
328 Self::Palladium,
329 Self::Silver,
330 Self::Cadmium,
331 Self::Indium,
332 Self::Tin,
333 Self::Antimony,
334 Self::Tellurium,
335 Self::Iodine,
336 Self::Xenon,
337 Self::Caesium,
338 Self::Barium,
339 Self::Lanthanum,
340 Self::Cerium,
341 Self::Praseodymium,
342 Self::Neodymium,
343 Self::Promethium,
344 Self::Samarium,
345 Self::Europium,
346 Self::Gadolinium,
347 Self::Terbium,
348 Self::Dysprosium,
349 Self::Holmium,
350 Self::Erbium,
351 Self::Thulium,
352 Self::Ytterbium,
353 Self::Lutetium,
354 Self::Hafnium,
355 Self::Tantalum,
356 Self::Tungsten,
357 Self::Rhenium,
358 Self::Osmium,
359 Self::Iridium,
360 Self::Platinum,
361 Self::Gold,
362 Self::Mercury,
363 Self::Thallium,
364 Self::Lead,
365 Self::Bismuth,
366 Self::Polonium,
367 Self::Astatine,
368 Self::Radon,
369 Self::Francium,
370 Self::Radium,
371 Self::Actinium,
372 Self::Thorium,
373 Self::Protactinium,
374 Self::Uranium,
375 Self::Neptunium,
376 Self::Plutonium,
377 Self::Americium,
378 Self::Curium,
379 Self::Berkelium,
380 Self::Californium,
381 Self::Einsteinium,
382 Self::Fermium,
383 Self::Mendelevium,
384 Self::Nobelium,
385 Self::Lawrencium,
386 Self::Rutherfordium,
387 Self::Dubnium,
388 Self::Seaborgium,
389 Self::Bohrium,
390 Self::Hassium,
391 Self::Meitnerium,
392 Self::Darmstadtium,
393 Self::Roentgenium,
394 Self::Copernicium,
395 Self::Nihonium,
396 Self::Flerovium,
397 Self::Moscovium,
398 Self::Livermorium,
399 Self::Tennessine,
400 Self::Oganesson,
401 ];
402
403 pub fn from_name(name: &str) -> Option<Self> {
418 match name.to_ascii_lowercase().as_str() {
419 "hydrogen" => Some(Self::Hydrogen),
420 "helium" => Some(Self::Helium),
421 "lithium" => Some(Self::Lithium),
422 "beryllium" => Some(Self::Beryllium),
423 "boron" => Some(Self::Boron),
424 "carbon" => Some(Self::Carbon),
425 "nitrogen" => Some(Self::Nitrogen),
426 "oxygen" => Some(Self::Oxygen),
427 "fluorine" => Some(Self::Fluorine),
428 "neon" => Some(Self::Neon),
429 "sodium" => Some(Self::Sodium),
430 "magnesium" => Some(Self::Magnesium),
431 "aluminium" => Some(Self::Aluminium),
432 "silicon" => Some(Self::Silicon),
433 "phosphorus" => Some(Self::Phosphorus),
434 "sulfur" => Some(Self::Sulfur),
435 "chlorine" => Some(Self::Chlorine),
436 "argon" => Some(Self::Argon),
437 "potassium" => Some(Self::Potassium),
438 "calcium" => Some(Self::Calcium),
439 "scandium" => Some(Self::Scandium),
440 "titanium" => Some(Self::Titanium),
441 "vanadium" => Some(Self::Vanadium),
442 "chromium" => Some(Self::Chromium),
443 "manganese" => Some(Self::Manganese),
444 "iron" => Some(Self::Iron),
445 "cobalt" => Some(Self::Cobalt),
446 "nickel" => Some(Self::Nickel),
447 "copper" => Some(Self::Copper),
448 "zinc" => Some(Self::Zinc),
449 "gallium" => Some(Self::Gallium),
450 "germanium" => Some(Self::Germanium),
451 "arsenic" => Some(Self::Arsenic),
452 "selenium" => Some(Self::Selenium),
453 "bromine" => Some(Self::Bromine),
454 "krypton" => Some(Self::Krypton),
455 "rubidium" => Some(Self::Rubidium),
456 "strontium" => Some(Self::Strontium),
457 "yttrium" => Some(Self::Yttrium),
458 "zirconium" => Some(Self::Zirconium),
459 "niobium" => Some(Self::Niobium),
460 "molybdenum" => Some(Self::Molybdenum),
461 "technetium" => Some(Self::Technetium),
462 "ruthenium" => Some(Self::Ruthenium),
463 "rhodium" => Some(Self::Rhodium),
464 "palladium" => Some(Self::Palladium),
465 "silver" => Some(Self::Silver),
466 "cadmium" => Some(Self::Cadmium),
467 "indium" => Some(Self::Indium),
468 "tin" => Some(Self::Tin),
469 "antimony" => Some(Self::Antimony),
470 "tellurium" => Some(Self::Tellurium),
471 "iodine" => Some(Self::Iodine),
472 "xenon" => Some(Self::Xenon),
473 "caesium" => Some(Self::Caesium),
474 "barium" => Some(Self::Barium),
475 "lanthanum" => Some(Self::Lanthanum),
476 "cerium" => Some(Self::Cerium),
477 "praseodymium" => Some(Self::Praseodymium),
478 "neodymium" => Some(Self::Neodymium),
479 "promethium" => Some(Self::Promethium),
480 "samarium" => Some(Self::Samarium),
481 "europium" => Some(Self::Europium),
482 "gadolinium" => Some(Self::Gadolinium),
483 "terbium" => Some(Self::Terbium),
484 "dysprosium" => Some(Self::Dysprosium),
485 "holmium" => Some(Self::Holmium),
486 "erbium" => Some(Self::Erbium),
487 "thulium" => Some(Self::Thulium),
488 "ytterbium" => Some(Self::Ytterbium),
489 "lutetium" => Some(Self::Lutetium),
490 "hafnium" => Some(Self::Hafnium),
491 "tantalum" => Some(Self::Tantalum),
492 "tungsten" => Some(Self::Tungsten),
493 "rhenium" => Some(Self::Rhenium),
494 "osmium" => Some(Self::Osmium),
495 "iridium" => Some(Self::Iridium),
496 "platinum" => Some(Self::Platinum),
497 "gold" => Some(Self::Gold),
498 "mercury" => Some(Self::Mercury),
499 "thallium" => Some(Self::Thallium),
500 "lead" => Some(Self::Lead),
501 "bismuth" => Some(Self::Bismuth),
502 "polonium" => Some(Self::Polonium),
503 "astatine" => Some(Self::Astatine),
504 "radon" => Some(Self::Radon),
505 "francium" => Some(Self::Francium),
506 "radium" => Some(Self::Radium),
507 "actinium" => Some(Self::Actinium),
508 "thorium" => Some(Self::Thorium),
509 "protactinium" => Some(Self::Protactinium),
510 "uranium" => Some(Self::Uranium),
511 "neptunium" => Some(Self::Neptunium),
512 "plutonium" => Some(Self::Plutonium),
513 "americium" => Some(Self::Americium),
514 "curium" => Some(Self::Curium),
515 "berkelium" => Some(Self::Berkelium),
516 "californium" => Some(Self::Californium),
517 "einsteinium" => Some(Self::Einsteinium),
518 "fermium" => Some(Self::Fermium),
519 "mendelevium" => Some(Self::Mendelevium),
520 "nobelium" => Some(Self::Nobelium),
521 "lawrencium" => Some(Self::Lawrencium),
522 "rutherfordium" => Some(Self::Rutherfordium),
523 "dubnium" => Some(Self::Dubnium),
524 "seaborgium" => Some(Self::Seaborgium),
525 "bohrium" => Some(Self::Bohrium),
526 "hassium" => Some(Self::Hassium),
527 "meitnerium" => Some(Self::Meitnerium),
528 "darmstadtium" => Some(Self::Darmstadtium),
529 "roentgenium" => Some(Self::Roentgenium),
530 "copernicium" => Some(Self::Copernicium),
531 "nihonium" => Some(Self::Nihonium),
532 "flerovium" => Some(Self::Flerovium),
533 "moscovium" => Some(Self::Moscovium),
534 "livermorium" => Some(Self::Livermorium),
535 "tennessine" => Some(Self::Tennessine),
536 "oganesson" => Some(Self::Oganesson),
537 _ => None,
538 }
539 }
540
541 pub fn from_symbol(symbol: &str) -> Option<Self> {
556 match symbol.to_ascii_lowercase().as_str() {
557 "h" => Some(Self::Hydrogen),
558 "he" => Some(Self::Helium),
559 "li" => Some(Self::Lithium),
560 "be" => Some(Self::Beryllium),
561 "b" => Some(Self::Boron),
562 "c" => Some(Self::Carbon),
563 "n" => Some(Self::Nitrogen),
564 "o" => Some(Self::Oxygen),
565 "f" => Some(Self::Fluorine),
566 "ne" => Some(Self::Neon),
567 "na" => Some(Self::Sodium),
568 "mg" => Some(Self::Magnesium),
569 "al" => Some(Self::Aluminium),
570 "si" => Some(Self::Silicon),
571 "p" => Some(Self::Phosphorus),
572 "s" => Some(Self::Sulfur),
573 "cl" => Some(Self::Chlorine),
574 "ar" => Some(Self::Argon),
575 "k" => Some(Self::Potassium),
576 "ca" => Some(Self::Calcium),
577 "sc" => Some(Self::Scandium),
578 "ti" => Some(Self::Titanium),
579 "v" => Some(Self::Vanadium),
580 "cr" => Some(Self::Chromium),
581 "mn" => Some(Self::Manganese),
582 "fe" => Some(Self::Iron),
583 "co" => Some(Self::Cobalt),
584 "ni" => Some(Self::Nickel),
585 "cu" => Some(Self::Copper),
586 "zn" => Some(Self::Zinc),
587 "ga" => Some(Self::Gallium),
588 "ge" => Some(Self::Germanium),
589 "as" => Some(Self::Arsenic),
590 "se" => Some(Self::Selenium),
591 "br" => Some(Self::Bromine),
592 "kr" => Some(Self::Krypton),
593 "rb" => Some(Self::Rubidium),
594 "sr" => Some(Self::Strontium),
595 "y" => Some(Self::Yttrium),
596 "zr" => Some(Self::Zirconium),
597 "nb" => Some(Self::Niobium),
598 "mo" => Some(Self::Molybdenum),
599 "tc" => Some(Self::Technetium),
600 "ru" => Some(Self::Ruthenium),
601 "rh" => Some(Self::Rhodium),
602 "pd" => Some(Self::Palladium),
603 "ag" => Some(Self::Silver),
604 "cd" => Some(Self::Cadmium),
605 "in" => Some(Self::Indium),
606 "sn" => Some(Self::Tin),
607 "sb" => Some(Self::Antimony),
608 "te" => Some(Self::Tellurium),
609 "i" => Some(Self::Iodine),
610 "xe" => Some(Self::Xenon),
611 "cs" => Some(Self::Caesium),
612 "ba" => Some(Self::Barium),
613 "la" => Some(Self::Lanthanum),
614 "ce" => Some(Self::Cerium),
615 "pr" => Some(Self::Praseodymium),
616 "nd" => Some(Self::Neodymium),
617 "pm" => Some(Self::Promethium),
618 "sm" => Some(Self::Samarium),
619 "eu" => Some(Self::Europium),
620 "gd" => Some(Self::Gadolinium),
621 "tb" => Some(Self::Terbium),
622 "dy" => Some(Self::Dysprosium),
623 "ho" => Some(Self::Holmium),
624 "er" => Some(Self::Erbium),
625 "tm" => Some(Self::Thulium),
626 "yb" => Some(Self::Ytterbium),
627 "lu" => Some(Self::Lutetium),
628 "hf" => Some(Self::Hafnium),
629 "ta" => Some(Self::Tantalum),
630 "w" => Some(Self::Tungsten),
631 "re" => Some(Self::Rhenium),
632 "os" => Some(Self::Osmium),
633 "ir" => Some(Self::Iridium),
634 "pt" => Some(Self::Platinum),
635 "au" => Some(Self::Gold),
636 "hg" => Some(Self::Mercury),
637 "tl" => Some(Self::Thallium),
638 "pb" => Some(Self::Lead),
639 "bi" => Some(Self::Bismuth),
640 "po" => Some(Self::Polonium),
641 "at" => Some(Self::Astatine),
642 "rn" => Some(Self::Radon),
643 "fr" => Some(Self::Francium),
644 "ra" => Some(Self::Radium),
645 "ac" => Some(Self::Actinium),
646 "th" => Some(Self::Thorium),
647 "pa" => Some(Self::Protactinium),
648 "u" => Some(Self::Uranium),
649 "np" => Some(Self::Neptunium),
650 "pu" => Some(Self::Plutonium),
651 "am" => Some(Self::Americium),
652 "cm" => Some(Self::Curium),
653 "bk" => Some(Self::Berkelium),
654 "cf" => Some(Self::Californium),
655 "es" => Some(Self::Einsteinium),
656 "fm" => Some(Self::Fermium),
657 "md" => Some(Self::Mendelevium),
658 "no" => Some(Self::Nobelium),
659 "lr" => Some(Self::Lawrencium),
660 "rf" => Some(Self::Rutherfordium),
661 "db" => Some(Self::Dubnium),
662 "sg" => Some(Self::Seaborgium),
663 "bh" => Some(Self::Bohrium),
664 "hs" => Some(Self::Hassium),
665 "mt" => Some(Self::Meitnerium),
666 "ds" => Some(Self::Darmstadtium),
667 "rg" => Some(Self::Roentgenium),
668 "cn" => Some(Self::Copernicium),
669 "nh" => Some(Self::Nihonium),
670 "fl" => Some(Self::Flerovium),
671 "mc" => Some(Self::Moscovium),
672 "lv" => Some(Self::Livermorium),
673 "ts" => Some(Self::Tennessine),
674 "og" => Some(Self::Oganesson),
675 _ => None,
676 }
677 }
678
679 pub fn from_atomic_number(atomic_number: u32) -> Option<Self> {
694 match atomic_number {
695 1 => Some(Self::Hydrogen),
696 2 => Some(Self::Helium),
697 3 => Some(Self::Lithium),
698 4 => Some(Self::Beryllium),
699 5 => Some(Self::Boron),
700 6 => Some(Self::Carbon),
701 7 => Some(Self::Nitrogen),
702 8 => Some(Self::Oxygen),
703 9 => Some(Self::Fluorine),
704 10 => Some(Self::Neon),
705 11 => Some(Self::Sodium),
706 12 => Some(Self::Magnesium),
707 13 => Some(Self::Aluminium),
708 14 => Some(Self::Silicon),
709 15 => Some(Self::Phosphorus),
710 16 => Some(Self::Sulfur),
711 17 => Some(Self::Chlorine),
712 18 => Some(Self::Argon),
713 19 => Some(Self::Potassium),
714 20 => Some(Self::Calcium),
715 21 => Some(Self::Scandium),
716 22 => Some(Self::Titanium),
717 23 => Some(Self::Vanadium),
718 24 => Some(Self::Chromium),
719 25 => Some(Self::Manganese),
720 26 => Some(Self::Iron),
721 27 => Some(Self::Cobalt),
722 28 => Some(Self::Nickel),
723 29 => Some(Self::Copper),
724 30 => Some(Self::Zinc),
725 31 => Some(Self::Gallium),
726 32 => Some(Self::Germanium),
727 33 => Some(Self::Arsenic),
728 34 => Some(Self::Selenium),
729 35 => Some(Self::Bromine),
730 36 => Some(Self::Krypton),
731 37 => Some(Self::Rubidium),
732 38 => Some(Self::Strontium),
733 39 => Some(Self::Yttrium),
734 40 => Some(Self::Zirconium),
735 41 => Some(Self::Niobium),
736 42 => Some(Self::Molybdenum),
737 43 => Some(Self::Technetium),
738 44 => Some(Self::Ruthenium),
739 45 => Some(Self::Rhodium),
740 46 => Some(Self::Palladium),
741 47 => Some(Self::Silver),
742 48 => Some(Self::Cadmium),
743 49 => Some(Self::Indium),
744 50 => Some(Self::Tin),
745 51 => Some(Self::Antimony),
746 52 => Some(Self::Tellurium),
747 53 => Some(Self::Iodine),
748 54 => Some(Self::Xenon),
749 55 => Some(Self::Caesium),
750 56 => Some(Self::Barium),
751 57 => Some(Self::Lanthanum),
752 58 => Some(Self::Cerium),
753 59 => Some(Self::Praseodymium),
754 60 => Some(Self::Neodymium),
755 61 => Some(Self::Promethium),
756 62 => Some(Self::Samarium),
757 63 => Some(Self::Europium),
758 64 => Some(Self::Gadolinium),
759 65 => Some(Self::Terbium),
760 66 => Some(Self::Dysprosium),
761 67 => Some(Self::Holmium),
762 68 => Some(Self::Erbium),
763 69 => Some(Self::Thulium),
764 70 => Some(Self::Ytterbium),
765 71 => Some(Self::Lutetium),
766 72 => Some(Self::Hafnium),
767 73 => Some(Self::Tantalum),
768 74 => Some(Self::Tungsten),
769 75 => Some(Self::Rhenium),
770 76 => Some(Self::Osmium),
771 77 => Some(Self::Iridium),
772 78 => Some(Self::Platinum),
773 79 => Some(Self::Gold),
774 80 => Some(Self::Mercury),
775 81 => Some(Self::Thallium),
776 82 => Some(Self::Lead),
777 83 => Some(Self::Bismuth),
778 84 => Some(Self::Polonium),
779 85 => Some(Self::Astatine),
780 86 => Some(Self::Radon),
781 87 => Some(Self::Francium),
782 88 => Some(Self::Radium),
783 89 => Some(Self::Actinium),
784 90 => Some(Self::Thorium),
785 91 => Some(Self::Protactinium),
786 92 => Some(Self::Uranium),
787 93 => Some(Self::Neptunium),
788 94 => Some(Self::Plutonium),
789 95 => Some(Self::Americium),
790 96 => Some(Self::Curium),
791 97 => Some(Self::Berkelium),
792 98 => Some(Self::Californium),
793 99 => Some(Self::Einsteinium),
794 100 => Some(Self::Fermium),
795 101 => Some(Self::Mendelevium),
796 102 => Some(Self::Nobelium),
797 103 => Some(Self::Lawrencium),
798 104 => Some(Self::Rutherfordium),
799 105 => Some(Self::Dubnium),
800 106 => Some(Self::Seaborgium),
801 107 => Some(Self::Bohrium),
802 108 => Some(Self::Hassium),
803 109 => Some(Self::Meitnerium),
804 110 => Some(Self::Darmstadtium),
805 111 => Some(Self::Roentgenium),
806 112 => Some(Self::Copernicium),
807 113 => Some(Self::Nihonium),
808 114 => Some(Self::Flerovium),
809 115 => Some(Self::Moscovium),
810 116 => Some(Self::Livermorium),
811 117 => Some(Self::Tennessine),
812 118 => Some(Self::Oganesson),
813 _ => None,
814 }
815 }
816
817 pub fn name(&self) -> &str {
827 match self {
828 Self::Hydrogen => "Hydrogen",
829 Self::Helium => "Helium",
830 Self::Lithium => "Lithium",
831 Self::Beryllium => "Beryllium",
832 Self::Boron => "Boron",
833 Self::Carbon => "Carbon",
834 Self::Nitrogen => "Nitrogen",
835 Self::Oxygen => "Oxygen",
836 Self::Fluorine => "Fluorine",
837 Self::Neon => "Neon",
838 Self::Sodium => "Sodium",
839 Self::Magnesium => "Magnesium",
840 Self::Aluminium => "Aluminium",
841 Self::Silicon => "Silicon",
842 Self::Phosphorus => "Phosphorus",
843 Self::Sulfur => "Sulfur",
844 Self::Chlorine => "Chlorine",
845 Self::Argon => "Argon",
846 Self::Potassium => "Potassium",
847 Self::Calcium => "Calcium",
848 Self::Scandium => "Scandium",
849 Self::Titanium => "Titanium",
850 Self::Vanadium => "Vanadium",
851 Self::Chromium => "Chromium",
852 Self::Manganese => "Manganese",
853 Self::Iron => "Iron",
854 Self::Cobalt => "Cobalt",
855 Self::Nickel => "Nickel",
856 Self::Copper => "Copper",
857 Self::Zinc => "Zinc",
858 Self::Gallium => "Gallium",
859 Self::Germanium => "Germanium",
860 Self::Arsenic => "Arsenic",
861 Self::Selenium => "Selenium",
862 Self::Bromine => "Bromine",
863 Self::Krypton => "Krypton",
864 Self::Rubidium => "Rubidium",
865 Self::Strontium => "Strontium",
866 Self::Yttrium => "Yttrium",
867 Self::Zirconium => "Zirconium",
868 Self::Niobium => "Niobium",
869 Self::Molybdenum => "Molybdenum",
870 Self::Technetium => "Technetium",
871 Self::Ruthenium => "Ruthenium",
872 Self::Rhodium => "Rhodium",
873 Self::Palladium => "Palladium",
874 Self::Silver => "Silver",
875 Self::Cadmium => "Cadmium",
876 Self::Indium => "Indium",
877 Self::Tin => "Tin",
878 Self::Antimony => "Antimony",
879 Self::Tellurium => "Tellurium",
880 Self::Iodine => "Iodine",
881 Self::Xenon => "Xenon",
882 Self::Caesium => "Caesium",
883 Self::Barium => "Barium",
884 Self::Lanthanum => "Lanthanum",
885 Self::Cerium => "Cerium",
886 Self::Praseodymium => "Praseodymium",
887 Self::Neodymium => "Neodymium",
888 Self::Promethium => "Promethium",
889 Self::Samarium => "Samarium",
890 Self::Europium => "Europium",
891 Self::Gadolinium => "Gadolinium",
892 Self::Terbium => "Terbium",
893 Self::Dysprosium => "Dysprosium",
894 Self::Holmium => "Holmium",
895 Self::Erbium => "Erbium",
896 Self::Thulium => "Thulium",
897 Self::Ytterbium => "Ytterbium",
898 Self::Lutetium => "Lutetium",
899 Self::Hafnium => "Hafnium",
900 Self::Tantalum => "Tantalum",
901 Self::Tungsten => "Tungsten",
902 Self::Rhenium => "Rhenium",
903 Self::Osmium => "Osmium",
904 Self::Iridium => "Iridium",
905 Self::Platinum => "Platinum",
906 Self::Gold => "Gold",
907 Self::Mercury => "Mercury",
908 Self::Thallium => "Thallium",
909 Self::Lead => "Lead",
910 Self::Bismuth => "Bismuth",
911 Self::Polonium => "Polonium",
912 Self::Astatine => "Astatine",
913 Self::Radon => "Radon",
914 Self::Francium => "Francium",
915 Self::Radium => "Radium",
916 Self::Actinium => "Actinium",
917 Self::Thorium => "Thorium",
918 Self::Protactinium => "Protactinium",
919 Self::Uranium => "Uranium",
920 Self::Neptunium => "Neptunium",
921 Self::Plutonium => "Plutonium",
922 Self::Americium => "Americium",
923 Self::Curium => "Curium",
924 Self::Berkelium => "Berkelium",
925 Self::Californium => "Californium",
926 Self::Einsteinium => "Einsteinium",
927 Self::Fermium => "Fermium",
928 Self::Mendelevium => "Mendelevium",
929 Self::Nobelium => "Nobelium",
930 Self::Lawrencium => "Lawrencium",
931 Self::Rutherfordium => "Rutherfordium",
932 Self::Dubnium => "Dubnium",
933 Self::Seaborgium => "Seaborgium",
934 Self::Bohrium => "Bohrium",
935 Self::Hassium => "Hassium",
936 Self::Meitnerium => "Meitnerium",
937 Self::Darmstadtium => "Darmstadtium",
938 Self::Roentgenium => "Roentgenium",
939 Self::Copernicium => "Copernicium",
940 Self::Nihonium => "Nihonium",
941 Self::Flerovium => "Flerovium",
942 Self::Moscovium => "Moscovium",
943 Self::Livermorium => "Livermorium",
944 Self::Tennessine => "Tennessine",
945 Self::Oganesson => "Oganesson",
946 }
947 }
948
949 pub fn symbol(&self) -> &str {
959 match self {
960 Self::Hydrogen => "H",
961 Self::Helium => "He",
962 Self::Lithium => "Li",
963 Self::Beryllium => "Be",
964 Self::Boron => "B",
965 Self::Carbon => "C",
966 Self::Nitrogen => "N",
967 Self::Oxygen => "O",
968 Self::Fluorine => "F",
969 Self::Neon => "Ne",
970 Self::Sodium => "Na",
971 Self::Magnesium => "Mg",
972 Self::Aluminium => "Al",
973 Self::Silicon => "Si",
974 Self::Phosphorus => "P",
975 Self::Sulfur => "S",
976 Self::Chlorine => "Cl",
977 Self::Argon => "Ar",
978 Self::Potassium => "K",
979 Self::Calcium => "Ca",
980 Self::Scandium => "Sc",
981 Self::Titanium => "Ti",
982 Self::Vanadium => "V",
983 Self::Chromium => "Cr",
984 Self::Manganese => "Mn",
985 Self::Iron => "Fe",
986 Self::Cobalt => "Co",
987 Self::Nickel => "Ni",
988 Self::Copper => "Cu",
989 Self::Zinc => "Zn",
990 Self::Gallium => "Ga",
991 Self::Germanium => "Ge",
992 Self::Arsenic => "As",
993 Self::Selenium => "Se",
994 Self::Bromine => "Br",
995 Self::Krypton => "Kr",
996 Self::Rubidium => "Rb",
997 Self::Strontium => "Sr",
998 Self::Yttrium => "Y",
999 Self::Zirconium => "Zr",
1000 Self::Niobium => "Nb",
1001 Self::Molybdenum => "Mo",
1002 Self::Technetium => "Tc",
1003 Self::Ruthenium => "Ru",
1004 Self::Rhodium => "Rh",
1005 Self::Palladium => "Pd",
1006 Self::Silver => "Ag",
1007 Self::Cadmium => "Cd",
1008 Self::Indium => "In",
1009 Self::Tin => "Sn",
1010 Self::Antimony => "Sb",
1011 Self::Tellurium => "Te",
1012 Self::Iodine => "I",
1013 Self::Xenon => "Xe",
1014 Self::Caesium => "Cs",
1015 Self::Barium => "Ba",
1016 Self::Lanthanum => "La",
1017 Self::Cerium => "Ce",
1018 Self::Praseodymium => "Pr",
1019 Self::Neodymium => "Nd",
1020 Self::Promethium => "Pm",
1021 Self::Samarium => "Sm",
1022 Self::Europium => "Eu",
1023 Self::Gadolinium => "Gd",
1024 Self::Terbium => "Tb",
1025 Self::Dysprosium => "Dy",
1026 Self::Holmium => "Ho",
1027 Self::Erbium => "Er",
1028 Self::Thulium => "Tm",
1029 Self::Ytterbium => "Yb",
1030 Self::Lutetium => "Lu",
1031 Self::Hafnium => "Hf",
1032 Self::Tantalum => "Ta",
1033 Self::Tungsten => "W",
1034 Self::Rhenium => "Re",
1035 Self::Osmium => "Os",
1036 Self::Iridium => "Ir",
1037 Self::Platinum => "Pt",
1038 Self::Gold => "Au",
1039 Self::Mercury => "Hg",
1040 Self::Thallium => "Tl",
1041 Self::Lead => "Pb",
1042 Self::Bismuth => "Bi",
1043 Self::Polonium => "Po",
1044 Self::Astatine => "At",
1045 Self::Radon => "Rn",
1046 Self::Francium => "Fr",
1047 Self::Radium => "Ra",
1048 Self::Actinium => "Ac",
1049 Self::Thorium => "Th",
1050 Self::Protactinium => "Pa",
1051 Self::Uranium => "U",
1052 Self::Neptunium => "Np",
1053 Self::Plutonium => "Pu",
1054 Self::Americium => "Am",
1055 Self::Curium => "Cm",
1056 Self::Berkelium => "Bk",
1057 Self::Californium => "Cf",
1058 Self::Einsteinium => "Es",
1059 Self::Fermium => "Fm",
1060 Self::Mendelevium => "Md",
1061 Self::Nobelium => "No",
1062 Self::Lawrencium => "Lr",
1063 Self::Rutherfordium => "Rf",
1064 Self::Dubnium => "Db",
1065 Self::Seaborgium => "Sg",
1066 Self::Bohrium => "Bh",
1067 Self::Hassium => "Hs",
1068 Self::Meitnerium => "Mt",
1069 Self::Darmstadtium => "Ds",
1070 Self::Roentgenium => "Rg",
1071 Self::Copernicium => "Cn",
1072 Self::Nihonium => "Nh",
1073 Self::Flerovium => "Fl",
1074 Self::Moscovium => "Mc",
1075 Self::Livermorium => "Lv",
1076 Self::Tennessine => "Ts",
1077 Self::Oganesson => "Og",
1078 }
1079 }
1080
1081 pub fn atomic_number(&self) -> u32 {
1091 match self {
1092 Self::Hydrogen => 1,
1093 Self::Helium => 2,
1094 Self::Lithium => 3,
1095 Self::Beryllium => 4,
1096 Self::Boron => 5,
1097 Self::Carbon => 6,
1098 Self::Nitrogen => 7,
1099 Self::Oxygen => 8,
1100 Self::Fluorine => 9,
1101 Self::Neon => 10,
1102 Self::Sodium => 11,
1103 Self::Magnesium => 12,
1104 Self::Aluminium => 13,
1105 Self::Silicon => 14,
1106 Self::Phosphorus => 15,
1107 Self::Sulfur => 16,
1108 Self::Chlorine => 17,
1109 Self::Argon => 18,
1110 Self::Potassium => 19,
1111 Self::Calcium => 20,
1112 Self::Scandium => 21,
1113 Self::Titanium => 22,
1114 Self::Vanadium => 23,
1115 Self::Chromium => 24,
1116 Self::Manganese => 25,
1117 Self::Iron => 26,
1118 Self::Cobalt => 27,
1119 Self::Nickel => 28,
1120 Self::Copper => 29,
1121 Self::Zinc => 30,
1122 Self::Gallium => 31,
1123 Self::Germanium => 32,
1124 Self::Arsenic => 33,
1125 Self::Selenium => 34,
1126 Self::Bromine => 35,
1127 Self::Krypton => 36,
1128 Self::Rubidium => 37,
1129 Self::Strontium => 38,
1130 Self::Yttrium => 39,
1131 Self::Zirconium => 40,
1132 Self::Niobium => 41,
1133 Self::Molybdenum => 42,
1134 Self::Technetium => 43,
1135 Self::Ruthenium => 44,
1136 Self::Rhodium => 45,
1137 Self::Palladium => 46,
1138 Self::Silver => 47,
1139 Self::Cadmium => 48,
1140 Self::Indium => 49,
1141 Self::Tin => 50,
1142 Self::Antimony => 51,
1143 Self::Tellurium => 52,
1144 Self::Iodine => 53,
1145 Self::Xenon => 54,
1146 Self::Caesium => 55,
1147 Self::Barium => 56,
1148 Self::Lanthanum => 57,
1149 Self::Cerium => 58,
1150 Self::Praseodymium => 59,
1151 Self::Neodymium => 60,
1152 Self::Promethium => 61,
1153 Self::Samarium => 62,
1154 Self::Europium => 63,
1155 Self::Gadolinium => 64,
1156 Self::Terbium => 65,
1157 Self::Dysprosium => 66,
1158 Self::Holmium => 67,
1159 Self::Erbium => 68,
1160 Self::Thulium => 69,
1161 Self::Ytterbium => 70,
1162 Self::Lutetium => 71,
1163 Self::Hafnium => 72,
1164 Self::Tantalum => 73,
1165 Self::Tungsten => 74,
1166 Self::Rhenium => 75,
1167 Self::Osmium => 76,
1168 Self::Iridium => 77,
1169 Self::Platinum => 78,
1170 Self::Gold => 79,
1171 Self::Mercury => 80,
1172 Self::Thallium => 81,
1173 Self::Lead => 82,
1174 Self::Bismuth => 83,
1175 Self::Polonium => 84,
1176 Self::Astatine => 85,
1177 Self::Radon => 86,
1178 Self::Francium => 87,
1179 Self::Radium => 88,
1180 Self::Actinium => 89,
1181 Self::Thorium => 90,
1182 Self::Protactinium => 91,
1183 Self::Uranium => 92,
1184 Self::Neptunium => 93,
1185 Self::Plutonium => 94,
1186 Self::Americium => 95,
1187 Self::Curium => 96,
1188 Self::Berkelium => 97,
1189 Self::Californium => 98,
1190 Self::Einsteinium => 99,
1191 Self::Fermium => 100,
1192 Self::Mendelevium => 101,
1193 Self::Nobelium => 102,
1194 Self::Lawrencium => 103,
1195 Self::Rutherfordium => 104,
1196 Self::Dubnium => 105,
1197 Self::Seaborgium => 106,
1198 Self::Bohrium => 107,
1199 Self::Hassium => 108,
1200 Self::Meitnerium => 109,
1201 Self::Darmstadtium => 110,
1202 Self::Roentgenium => 111,
1203 Self::Copernicium => 112,
1204 Self::Nihonium => 113,
1205 Self::Flerovium => 114,
1206 Self::Moscovium => 115,
1207 Self::Livermorium => 116,
1208 Self::Tennessine => 117,
1209 Self::Oganesson => 118,
1210 }
1211 }
1212
1213 pub fn period(&self) -> u32 {
1227 match self {
1228 Element::Hydrogen => 1,
1229 Element::Helium => 1,
1230 Element::Lithium => 2,
1231 Element::Beryllium => 2,
1232 Element::Boron => 2,
1233 Element::Carbon => 2,
1234 Element::Nitrogen => 2,
1235 Element::Oxygen => 2,
1236 Element::Fluorine => 2,
1237 Element::Neon => 2,
1238 Element::Sodium => 3,
1239 Element::Magnesium => 3,
1240 Element::Aluminium => 3,
1241 Element::Silicon => 3,
1242 Element::Phosphorus => 3,
1243 Element::Sulfur => 3,
1244 Element::Chlorine => 3,
1245 Element::Argon => 3,
1246 Element::Potassium => 4,
1247 Element::Calcium => 4,
1248 Element::Scandium => 4,
1249 Element::Titanium => 4,
1250 Element::Vanadium => 4,
1251 Element::Chromium => 4,
1252 Element::Manganese => 4,
1253 Element::Iron => 4,
1254 Element::Cobalt => 4,
1255 Element::Nickel => 4,
1256 Element::Copper => 4,
1257 Element::Zinc => 4,
1258 Element::Gallium => 4,
1259 Element::Germanium => 4,
1260 Element::Arsenic => 4,
1261 Element::Selenium => 4,
1262 Element::Bromine => 4,
1263 Element::Krypton => 4,
1264 Element::Rubidium => 5,
1265 Element::Strontium => 5,
1266 Element::Yttrium => 5,
1267 Element::Zirconium => 5,
1268 Element::Niobium => 5,
1269 Element::Molybdenum => 5,
1270 Element::Technetium => 5,
1271 Element::Ruthenium => 5,
1272 Element::Rhodium => 5,
1273 Element::Palladium => 5,
1274 Element::Silver => 5,
1275 Element::Cadmium => 5,
1276 Element::Indium => 5,
1277 Element::Tin => 5,
1278 Element::Antimony => 5,
1279 Element::Tellurium => 5,
1280 Element::Iodine => 5,
1281 Element::Xenon => 5,
1282 Element::Caesium => 6,
1283 Element::Barium => 6,
1284 Element::Lanthanum => 6,
1285 Element::Cerium => 6,
1286 Element::Praseodymium => 6,
1287 Element::Neodymium => 6,
1288 Element::Promethium => 6,
1289 Element::Samarium => 6,
1290 Element::Europium => 6,
1291 Element::Gadolinium => 6,
1292 Element::Terbium => 6,
1293 Element::Dysprosium => 6,
1294 Element::Holmium => 6,
1295 Element::Erbium => 6,
1296 Element::Thulium => 6,
1297 Element::Ytterbium => 6,
1298 Element::Lutetium => 6,
1299 Element::Hafnium => 6,
1300 Element::Tantalum => 6,
1301 Element::Tungsten => 6,
1302 Element::Rhenium => 6,
1303 Element::Osmium => 6,
1304 Element::Iridium => 6,
1305 Element::Platinum => 6,
1306 Element::Gold => 6,
1307 Element::Mercury => 6,
1308 Element::Thallium => 6,
1309 Element::Lead => 6,
1310 Element::Bismuth => 6,
1311 Element::Polonium => 6,
1312 Element::Astatine => 6,
1313 Element::Radon => 6,
1314 Element::Francium => 7,
1315 Element::Radium => 7,
1316 Element::Actinium => 7,
1317 Element::Thorium => 7,
1318 Element::Protactinium => 7,
1319 Element::Uranium => 7,
1320 Element::Neptunium => 7,
1321 Element::Plutonium => 7,
1322 Element::Americium => 7,
1323 Element::Curium => 7,
1324 Element::Berkelium => 7,
1325 Element::Californium => 7,
1326 Element::Einsteinium => 7,
1327 Element::Fermium => 7,
1328 Element::Mendelevium => 7,
1329 Element::Nobelium => 7,
1330 Element::Lawrencium => 7,
1331 Element::Rutherfordium => 7,
1332 Element::Dubnium => 7,
1333 Element::Seaborgium => 7,
1334 Element::Bohrium => 7,
1335 Element::Hassium => 7,
1336 Element::Meitnerium => 7,
1337 Element::Darmstadtium => 7,
1338 Element::Roentgenium => 7,
1339 Element::Copernicium => 7,
1340 Element::Nihonium => 7,
1341 Element::Flerovium => 7,
1342 Element::Moscovium => 7,
1343 Element::Livermorium => 7,
1344 Element::Tennessine => 7,
1345 Element::Oganesson => 7,
1346 }
1347 }
1348
1349 pub fn group(&self) -> Option<u32> {
1367 match self {
1368 Element::Hydrogen => Some(1),
1369 Element::Helium => Some(18),
1370 Element::Lithium => Some(1),
1371 Element::Beryllium => Some(2),
1372 Element::Boron => Some(13),
1373 Element::Carbon => Some(14),
1374 Element::Nitrogen => Some(15),
1375 Element::Oxygen => Some(16),
1376 Element::Fluorine => Some(17),
1377 Element::Neon => Some(18),
1378 Element::Sodium => Some(1),
1379 Element::Magnesium => Some(2),
1380 Element::Aluminium => Some(13),
1381 Element::Silicon => Some(14),
1382 Element::Phosphorus => Some(15),
1383 Element::Sulfur => Some(16),
1384 Element::Chlorine => Some(17),
1385 Element::Argon => Some(18),
1386 Element::Potassium => Some(1),
1387 Element::Calcium => Some(2),
1388 Element::Scandium => Some(3),
1389 Element::Titanium => Some(4),
1390 Element::Vanadium => Some(5),
1391 Element::Chromium => Some(6),
1392 Element::Manganese => Some(7),
1393 Element::Iron => Some(8),
1394 Element::Cobalt => Some(9),
1395 Element::Nickel => Some(10),
1396 Element::Copper => Some(11),
1397 Element::Zinc => Some(12),
1398 Element::Gallium => Some(13),
1399 Element::Germanium => Some(14),
1400 Element::Arsenic => Some(15),
1401 Element::Selenium => Some(61),
1402 Element::Bromine => Some(17),
1403 Element::Krypton => Some(18),
1404 Element::Rubidium => Some(1),
1405 Element::Strontium => Some(2),
1406 Element::Yttrium => Some(3),
1407 Element::Zirconium => Some(4),
1408 Element::Niobium => Some(5),
1409 Element::Molybdenum => Some(6),
1410 Element::Technetium => Some(7),
1411 Element::Ruthenium => Some(8),
1412 Element::Rhodium => Some(9),
1413 Element::Palladium => Some(10),
1414 Element::Silver => Some(11),
1415 Element::Cadmium => Some(12),
1416 Element::Indium => Some(13),
1417 Element::Tin => Some(14),
1418 Element::Antimony => Some(15),
1419 Element::Tellurium => Some(16),
1420 Element::Iodine => Some(17),
1421 Element::Xenon => Some(18),
1422 Element::Caesium => Some(1),
1423 Element::Barium => Some(2),
1424 Element::Lanthanum => None,
1425 Element::Cerium => None,
1426 Element::Praseodymium => None,
1427 Element::Neodymium => None,
1428 Element::Promethium => None,
1429 Element::Samarium => None,
1430 Element::Europium => None,
1431 Element::Gadolinium => None,
1432 Element::Terbium => None,
1433 Element::Dysprosium => None,
1434 Element::Holmium => None,
1435 Element::Erbium => None,
1436 Element::Thulium => None,
1437 Element::Ytterbium => None,
1438 Element::Lutetium => Some(3),
1439 Element::Hafnium => Some(4),
1440 Element::Tantalum => Some(5),
1441 Element::Tungsten => Some(6),
1442 Element::Rhenium => Some(7),
1443 Element::Osmium => Some(8),
1444 Element::Iridium => Some(9),
1445 Element::Platinum => Some(10),
1446 Element::Gold => Some(11),
1447 Element::Mercury => Some(12),
1448 Element::Thallium => Some(13),
1449 Element::Lead => Some(14),
1450 Element::Bismuth => Some(15),
1451 Element::Polonium => Some(16),
1452 Element::Astatine => Some(17),
1453 Element::Radon => Some(18),
1454 Element::Francium => Some(1),
1455 Element::Radium => Some(2),
1456 Element::Actinium => None,
1457 Element::Thorium => None,
1458 Element::Protactinium => None,
1459 Element::Uranium => None,
1460 Element::Neptunium => None,
1461 Element::Plutonium => None,
1462 Element::Americium => None,
1463 Element::Curium => None,
1464 Element::Berkelium => None,
1465 Element::Californium => None,
1466 Element::Einsteinium => None,
1467 Element::Fermium => None,
1468 Element::Mendelevium => None,
1469 Element::Nobelium => None,
1470 Element::Lawrencium => Some(3),
1471 Element::Rutherfordium => Some(4),
1472 Element::Dubnium => Some(5),
1473 Element::Seaborgium => Some(6),
1474 Element::Bohrium => Some(7),
1475 Element::Hassium => Some(8),
1476 Element::Meitnerium => Some(9),
1477 Element::Darmstadtium => Some(10),
1478 Element::Roentgenium => Some(11),
1479 Element::Copernicium => Some(12),
1480 Element::Nihonium => Some(13),
1481 Element::Flerovium => Some(14),
1482 Element::Moscovium => Some(15),
1483 Element::Livermorium => Some(16),
1484 Element::Tennessine => Some(17),
1485 Element::Oganesson => Some(18),
1486 }
1487 }
1488
1489 pub fn block(&self) -> &str {
1503 match self {
1504 Element::Hydrogen => "s",
1505 Element::Helium => "s",
1506 Element::Lithium => "s",
1507 Element::Beryllium => "s",
1508 Element::Boron => "p",
1509 Element::Carbon => "p",
1510 Element::Nitrogen => "p",
1511 Element::Oxygen => "p",
1512 Element::Fluorine => "p",
1513 Element::Neon => "p",
1514 Element::Sodium => "s",
1515 Element::Magnesium => "s",
1516 Element::Aluminium => "p",
1517 Element::Silicon => "p",
1518 Element::Phosphorus => "p",
1519 Element::Sulfur => "p",
1520 Element::Chlorine => "p",
1521 Element::Argon => "p",
1522 Element::Potassium => "s",
1523 Element::Calcium => "s",
1524 Element::Scandium => "d",
1525 Element::Titanium => "d",
1526 Element::Vanadium => "d",
1527 Element::Chromium => "d",
1528 Element::Manganese => "d",
1529 Element::Iron => "d",
1530 Element::Cobalt => "d",
1531 Element::Nickel => "d",
1532 Element::Copper => "d",
1533 Element::Zinc => "d",
1534 Element::Gallium => "p",
1535 Element::Germanium => "p",
1536 Element::Arsenic => "p",
1537 Element::Selenium => "p",
1538 Element::Bromine => "p",
1539 Element::Krypton => "p",
1540 Element::Rubidium => "s",
1541 Element::Strontium => "s",
1542 Element::Yttrium => "d",
1543 Element::Zirconium => "d",
1544 Element::Niobium => "d",
1545 Element::Molybdenum => "d",
1546 Element::Technetium => "d",
1547 Element::Ruthenium => "d",
1548 Element::Rhodium => "d",
1549 Element::Palladium => "d",
1550 Element::Silver => "d",
1551 Element::Cadmium => "d",
1552 Element::Indium => "p",
1553 Element::Tin => "p",
1554 Element::Antimony => "p",
1555 Element::Tellurium => "p",
1556 Element::Iodine => "p",
1557 Element::Xenon => "p",
1558 Element::Caesium => "s",
1559 Element::Barium => "s",
1560 Element::Lanthanum => "f",
1561 Element::Cerium => "f",
1562 Element::Praseodymium => "f",
1563 Element::Neodymium => "f",
1564 Element::Promethium => "f",
1565 Element::Samarium => "f",
1566 Element::Europium => "f",
1567 Element::Gadolinium => "f",
1568 Element::Terbium => "f",
1569 Element::Dysprosium => "f",
1570 Element::Holmium => "f",
1571 Element::Erbium => "f",
1572 Element::Thulium => "f",
1573 Element::Ytterbium => "f",
1574 Element::Lutetium => "d",
1575 Element::Hafnium => "d",
1576 Element::Tantalum => "d",
1577 Element::Tungsten => "d",
1578 Element::Rhenium => "d",
1579 Element::Osmium => "d",
1580 Element::Iridium => "d",
1581 Element::Platinum => "d",
1582 Element::Gold => "d",
1583 Element::Mercury => "d",
1584 Element::Thallium => "p",
1585 Element::Lead => "p",
1586 Element::Bismuth => "p",
1587 Element::Polonium => "p",
1588 Element::Astatine => "p",
1589 Element::Radon => "p",
1590 Element::Francium => "s",
1591 Element::Radium => "s",
1592 Element::Actinium => "f",
1593 Element::Thorium => "f",
1594 Element::Protactinium => "f",
1595 Element::Uranium => "f",
1596 Element::Neptunium => "f",
1597 Element::Plutonium => "f",
1598 Element::Americium => "f",
1599 Element::Curium => "f",
1600 Element::Berkelium => "f",
1601 Element::Californium => "f",
1602 Element::Einsteinium => "f",
1603 Element::Fermium => "f",
1604 Element::Mendelevium => "f",
1605 Element::Nobelium => "f",
1606 Element::Lawrencium => "d",
1607 Element::Rutherfordium => "d",
1608 Element::Dubnium => "d",
1609 Element::Seaborgium => "d",
1610 Element::Bohrium => "d",
1611 Element::Hassium => "d",
1612 Element::Meitnerium => "d",
1613 Element::Darmstadtium => "d",
1614 Element::Roentgenium => "d",
1615 Element::Copernicium => "d",
1616 Element::Nihonium => "p",
1617 Element::Flerovium => "p",
1618 Element::Moscovium => "p",
1619 Element::Livermorium => "p",
1620 Element::Tennessine => "p",
1621 Element::Oganesson => "p",
1622 }
1623 }
1624
1625 pub fn iter() -> impl Iterator<Item = Element> {
1637 Self::ELEMENTS.iter().copied()
1638 }
1639
1640 pub fn is_alkali_metal(&self) -> bool {
1655 matches!(
1656 self,
1657 Self::Lithium
1658 | Self::Sodium
1659 | Self::Potassium
1660 | Self::Rubidium
1661 | Self::Caesium
1662 | Self::Francium
1663 )
1664 }
1665
1666 pub fn is_alkaline_earth_metal(&self) -> bool {
1681 matches!(
1682 self,
1683 Self::Beryllium
1684 | Self::Magnesium
1685 | Self::Calcium
1686 | Self::Strontium
1687 | Self::Barium
1688 | Self::Radium
1689 )
1690 }
1691
1692 pub fn is_pnictogen(&self) -> bool {
1707 matches!(
1708 self,
1709 Self::Nitrogen
1710 | Self::Phosphorus
1711 | Self::Arsenic
1712 | Self::Antimony
1713 | Self::Bismuth
1714 | Self::Moscovium
1715 )
1716 }
1717
1718 pub fn is_chalcogen(&self) -> bool {
1733 matches!(
1734 self,
1735 Self::Oxygen
1736 | Self::Sulfur
1737 | Self::Selenium
1738 | Self::Tellurium
1739 | Self::Polonium
1740 | Self::Livermorium
1741 )
1742 }
1743
1744 pub fn is_halogen(&self) -> bool {
1759 matches!(
1760 self,
1761 Self::Fluorine
1762 | Self::Chlorine
1763 | Self::Bromine
1764 | Self::Iodine
1765 | Self::Astatine
1766 | Self::Tennessine
1767 )
1768 }
1769
1770 pub fn is_noble_gas(&self) -> bool {
1785 matches!(
1786 self,
1787 Self::Helium
1788 | Self::Neon
1789 | Self::Argon
1790 | Self::Krypton
1791 | Self::Xenon
1792 | Self::Radon
1793 | Self::Oganesson
1794 )
1795 }
1796}