Skip to main content

use_molecule/
molecule_kind.rs

1use std::fmt;
2
3/// A lightweight molecule classification label.
4#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
5pub enum MoleculeKind {
6    /// Neutral molecule.
7    Neutral,
8    /// Molecular ion.
9    Ion,
10    /// Radical.
11    Radical,
12    /// Diatomic molecule.
13    Diatomic,
14    /// Polyatomic molecule.
15    Polyatomic,
16    /// Organic molecule.
17    Organic,
18    /// Inorganic molecule.
19    Inorganic,
20    /// Biomolecule.
21    Biomolecule,
22    /// Unknown or intentionally unspecified classification.
23    Unknown,
24}
25
26impl fmt::Display for MoleculeKind {
27    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
28        let value = match self {
29            Self::Neutral => "neutral",
30            Self::Ion => "ion",
31            Self::Radical => "radical",
32            Self::Diatomic => "diatomic",
33            Self::Polyatomic => "polyatomic",
34            Self::Organic => "organic",
35            Self::Inorganic => "inorganic",
36            Self::Biomolecule => "biomolecule",
37            Self::Unknown => "unknown",
38        };
39
40        formatter.write_str(value)
41    }
42}