Skip to main content

use_reaction/
reaction_kind.rs

1use std::fmt;
2
3/// A lightweight reaction classification label.
4#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
5pub enum ReactionKind {
6    /// Synthesis reaction label.
7    Synthesis,
8    /// Decomposition reaction label.
9    Decomposition,
10    /// Single-replacement reaction label.
11    SingleReplacement,
12    /// Double-replacement reaction label.
13    DoubleReplacement,
14    /// Combustion reaction label.
15    Combustion,
16    /// Acid-base reaction label.
17    AcidBase,
18    /// Redox reaction label.
19    Redox,
20    /// Precipitation reaction label.
21    Precipitation,
22    /// Neutralization reaction label.
23    Neutralization,
24    /// Polymerization reaction label.
25    Polymerization,
26    /// Unknown or intentionally unspecified classification.
27    Unknown,
28}
29
30impl fmt::Display for ReactionKind {
31    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
32        let value = match self {
33            Self::Synthesis => "synthesis",
34            Self::Decomposition => "decomposition",
35            Self::SingleReplacement => "single replacement",
36            Self::DoubleReplacement => "double replacement",
37            Self::Combustion => "combustion",
38            Self::AcidBase => "acid-base",
39            Self::Redox => "redox",
40            Self::Precipitation => "precipitation",
41            Self::Neutralization => "neutralization",
42            Self::Polymerization => "polymerization",
43            Self::Unknown => "unknown",
44        };
45
46        formatter.write_str(value)
47    }
48}