periodic-table-rs 0.1.2

A chemistry library written in Rust.
Documentation
pub mod names;
pub use names::Name;

pub mod symbols;
pub use symbols::Symbol;

use strum_macros::AsRefStr;

#[derive(Debug)]
pub struct Element {
    pub atomic_number: u8,
    pub symbol: Symbol,
    pub name: Name,
    pub atomic_mass: f64,
    pub cpk_hex_color: Option<Color>,
    pub electron_configuration: &'static [ElectronConfigurationPart],
    pub electronegativity: Option<f64>,
    pub atomic_radius: Option<u16>,
    pub ionization_energy: Option<f64>,
    pub electron_affinity: Option<f64>,
    pub oxidation_states: Option<&'static [i8]>,
    pub standard_state: MatterState,
    pub melting_point: Option<f64>,
    pub boiling_point: Option<f64>,
    pub density: Option<f64>,
    pub group_block: GroupBlock,
    pub year_discovered: YearDiscovered,
}

#[derive(Debug, AsRefStr)]
pub enum MatterState {
    Gas,
    Solid,
    Liquid,
}

#[derive(Debug, AsRefStr)]
pub enum GroupBlock {
    Nonmetal,
    NobleGas,
    AlkaliMetal,
    AlkalineEarthMetal,
    Metalloid,
    Halogen,
    PostTransitionMetal,
    TransitionMetal,
    Lanthanide,
    Actinide,
}

#[derive(Debug)]
pub struct Color {
    pub red: u8,
    pub green: u8,
    pub blue: u8,
}

#[derive(Debug, AsRefStr)]
pub enum Orbital {
    S,
    P,
    D,
    F,
}

#[derive(Debug)]
pub struct ElectronConfigurationPart {
    pub energy_level: u8,
    pub orbital: Orbital,
    pub electrons: u8,
}

#[derive(Debug, AsRefStr)]
pub enum YearDiscovered {
    Year(u16),
    Ancient,
}