kr580 1.0.0

Desktop KR580VM80 / Intel 8080 emulator.
Documentation
use thiserror::Error;

#[derive(Clone, Debug, Error, PartialEq, Eq)]
pub enum AppError {
    #[error("core error: {0}")]
    Core(String),
    #[error("persistence error: {0}")]
    Persistence(String),
    #[error("I/O error: {0}")]
    Io(String),
    #[error("application worker stopped")]
    WorkerStopped,
}

impl From<k580_core::CoreError> for AppError {
    fn from(value: k580_core::CoreError) -> Self {
        Self::Core(value.to_string())
    }
}

impl From<crate::persistence::PersistenceError> for AppError {
    fn from(value: crate::persistence::PersistenceError) -> Self {
        Self::Persistence(value.to_string())
    }
}

impl From<crate::persistence::ProgramError> for AppError {
    fn from(value: crate::persistence::ProgramError) -> Self {
        Self::Persistence(value.to_string())
    }
}

impl From<crate::persistence::ExportError> for AppError {
    fn from(value: crate::persistence::ExportError) -> Self {
        Self::Persistence(value.to_string())
    }
}

impl From<crate::persistence::ImportError> for AppError {
    fn from(value: crate::persistence::ImportError) -> Self {
        Self::Persistence(value.to_string())
    }
}

impl From<std::io::Error> for AppError {
    fn from(value: std::io::Error) -> Self {
        Self::Io(value.to_string())
    }
}

impl From<k580_core::PortError> for AppError {
    fn from(value: k580_core::PortError) -> Self {
        Self::Core(value.to_string())
    }
}

impl From<k580_core::ValidationError> for AppError {
    fn from(value: k580_core::ValidationError) -> Self {
        Self::Core(value.to_string())
    }
}