berror 0.1.0

A micro crate for common error handling
Documentation
use std::fmt;

#[derive(Debug)]
pub enum Berror {
  NA,
  None(Option<String>),
  Is(String),
}

impl fmt::Display for Berror {
  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    match self {
      Self::NA => write!(f, "NA"),
      Self::None(e) => {
        if let Some(e) = e.as_ref() { write!(f, "None({})", e) }
        else { write!(f, "None") }
      },
      Self::Is(e) => write!(f, "{}", e),
    }
  }
}

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


#[macro_export]
macro_rules! na {
  () => { Berror::NA }
}

#[macro_export]
macro_rules! none {
  () => { Berror::None(None) };
  ($e:expr) => { Berror::None(Some(format!("{:?}", $e))) };
}

#[macro_export]
macro_rules! err_is {
  ($e:expr) => { Berror::Is(format!("{:?}", $e)) }
}