xraydb 0.1.2

X-ray reference data for the elements
Documentation
use std::fmt;

#[derive(Debug)]
pub enum XrayDbError {
    UnknownElement(String),
    UnknownEdge { element: String, edge: String },
    UnknownIon(String),
    UnknownGas(String),
    EnergyOutOfRange { energy: f64, min: f64, max: f64 },
    InvalidFormula(String),
    DataError(String),
}

pub type Result<T> = std::result::Result<T, XrayDbError>;

impl fmt::Display for XrayDbError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Self::UnknownElement(e) => write!(f, "unknown element: {e}"),
            Self::UnknownEdge { element, edge } => {
                write!(f, "unknown edge '{edge}' for element '{element}'")
            }
            Self::UnknownIon(ion) => write!(f, "unknown ion: {ion}"),
            Self::UnknownGas(gas) => write!(f, "unknown gas: {gas}"),
            Self::EnergyOutOfRange { energy, min, max } => {
                write!(f, "energy {energy} eV out of range [{min}, {max}]")
            }
            Self::InvalidFormula(formula) => write!(f, "invalid chemical formula: {formula}"),
            Self::DataError(msg) => write!(f, "data error: {msg}"),
        }
    }
}

impl std::error::Error for XrayDbError {}