Skip to main content

use_compound/
compound_kind.rs

1use std::fmt;
2
3/// A lightweight compound classification label.
4#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
5pub enum CompoundKind {
6    /// A molecular compound.
7    Molecular,
8    /// An ionic compound.
9    Ionic,
10    /// An organic compound.
11    Organic,
12    /// An inorganic compound.
13    Inorganic,
14    /// An acid.
15    Acid,
16    /// A base.
17    Base,
18    /// A salt.
19    Salt,
20    /// A hydrate.
21    Hydrate,
22    /// A coordination compound.
23    Coordination,
24    /// Unknown or intentionally unspecified classification.
25    Unknown,
26}
27
28impl fmt::Display for CompoundKind {
29    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
30        let value = match self {
31            Self::Molecular => "molecular",
32            Self::Ionic => "ionic",
33            Self::Organic => "organic",
34            Self::Inorganic => "inorganic",
35            Self::Acid => "acid",
36            Self::Base => "base",
37            Self::Salt => "salt",
38            Self::Hydrate => "hydrate",
39            Self::Coordination => "coordination",
40            Self::Unknown => "unknown",
41        };
42
43        formatter.write_str(value)
44    }
45}