Skip to content
Snippets Groups Projects
error.rs 1.65 KiB
Newer Older
Udo Eisenbarth's avatar
Udo Eisenbarth committed
//! Opossum specfic error structures
use std::{error::Error, fmt::Display};

Udo Eisenbarth's avatar
Udo Eisenbarth committed
/// Errors that can be returned by various OPOSSUM functions.
Udo Eisenbarth's avatar
Udo Eisenbarth committed
#[derive(Debug, Clone)]
pub enum OpossumError {
    /// error while setting up an `OpticScenery`
    OpticScenery(String),
    /// error while setting up an `OpticGroup`. The reasons are similar to [`OpossumError::OpticScenery`]
    OpticGroup(String),
Udo Eisenbarth's avatar
Udo Eisenbarth committed
    /// (mostly internal) errors while dealing with optical ports.
    OpticPort(String),
    /// mostly runtime errors occuring during the analysis of a scenery
    /// errors while handling optical spectra
    Spectrum(String),
    /// errors not falling in one of the categories above
    Other(String),
}

impl Display for OpossumError {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            OpossumError::OpticScenery(m) => {
Udo Eisenbarth's avatar
Udo Eisenbarth committed
                write!(f, "Opossum Error::OpticScenery::{}", m)
            }
            OpossumError::OpticGroup(m) => {
Udo Eisenbarth's avatar
Udo Eisenbarth committed
                write!(f, "Opossum Error::OpticGroup::{}", m)
            }
            OpossumError::OpticPort(m) => {
Udo Eisenbarth's avatar
Udo Eisenbarth committed
                write!(f, "Opossum Error::OpticPort::{}", m)
            OpossumError::Analysis(m) => {
                write!(f, "Opossum Error::Analysis::{}", m)
            }
            OpossumError::Spectrum(m) => {
                write!(f, "Opossum Spectrum::{}", m)
            }
Udo Eisenbarth's avatar
Udo Eisenbarth committed
            OpossumError::Other(m) => write!(f, "Opossum Error::Other::{}", m),
        }
    }
}
impl Error for OpossumError {}
Udo Eisenbarth's avatar
Udo Eisenbarth committed

impl std::convert::From<String> for OpossumError {
    fn from(msg: String) -> Self {
        Self::Other(msg)
    }