x-base 0.1.1

Base framework for X
Documentation
use thiserror::Error;

#[derive(Clone, Debug, Error)]
pub enum BaseError {
    #[error("Failed: {0}")]
    Failed(String),
    #[error("Invalid: {0}")]
    Invalid(String),
    #[error("Again: {0}")]
    Again(String),
    #[error("Canceled: {0}")]
    Canceled(String),
    #[error("Creation failed: {0}")]
    CreationFailed(String),
    #[error("Invalid parameter: {0} {1}")]
    InvalidParameter(String, String),
    #[error("Not implemented")]
    NotImplemented,
    #[error("Not found: {0}")]
    NotFound(String),
    #[error("Unsupported: {0}")]
    Unsupported(String),
    #[error("Initialization failed: {0}")]
    InitializationFailed(String),
}

#[macro_export]
macro_rules! invalid_param_error {
    ($param:expr) => {
        BaseError::InvalidParameter(stringify!($param).to_string(), format!("{:?}", $param).to_string())
    };
}

#[macro_export]
macro_rules! none_param_error {
    ($param:expr) => {
        BaseError::InvalidParameter(stringify!($param).to_string(), stringify!(None).to_string())
    };
}

#[macro_export]
macro_rules! not_found_error {
    ($param:expr) => {
        BaseError::NotFound(format!("{:?}", $param).to_string())
    };
}

#[macro_export]
macro_rules! unsupported_error {
    ($param:expr) => {
        BaseError::Unsupported(stringify!($param).to_string())
    };
}