deft 0.15.0

Cross platform ui framework
use crate::js::JsError;
use crate::mrc::UpgradeError;
use std::error::Error;
use std::fmt::{Display, Formatter};

#[derive(Debug)]
pub enum DeftError {
    InvalidState,
    InvalidParameter,
    Internal(String),
}

impl Display for DeftError {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        match self {
            DeftError::InvalidState => f.write_str("invalid state"),
            DeftError::InvalidParameter => f.write_str("invalid parameter"),
            DeftError::Internal(message) => f.write_str(message),
        }
    }
}

impl Error for DeftError {}

impl From<UpgradeError> for DeftError {
    fn from(_value: UpgradeError) -> Self {
        DeftError::InvalidState
    }
}

impl From<JsError> for DeftError {
    fn from(value: JsError) -> Self {
        DeftError::Internal(value.to_string())
    }
}

pub type DeftResult<T> = Result<T, DeftError>;