Skip to main content

use_ion/
ion_kind.rs

1use std::fmt;
2
3/// A lightweight ion classification label.
4#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
5pub enum IonKind {
6    /// Monatomic ion.
7    Monatomic,
8    /// Polyatomic ion.
9    Polyatomic,
10    /// Cation label.
11    Cation,
12    /// Anion label.
13    Anion,
14    /// Radical ion label.
15    RadicalIon,
16    /// Zwitterion label.
17    Zwitterion,
18    /// Complex ion label.
19    ComplexIon,
20    /// Unknown or intentionally unspecified classification.
21    Unknown,
22}
23
24impl fmt::Display for IonKind {
25    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
26        let value = match self {
27            Self::Monatomic => "monatomic",
28            Self::Polyatomic => "polyatomic",
29            Self::Cation => "cation",
30            Self::Anion => "anion",
31            Self::RadicalIon => "radical ion",
32            Self::Zwitterion => "zwitterion",
33            Self::ComplexIon => "complex ion",
34            Self::Unknown => "unknown",
35        };
36
37        formatter.write_str(value)
38    }
39}