regiusmark 0.3.0

Regius Mark core blockchain library.
Documentation
use std::error::Error;

#[derive(Clone, Debug, PartialEq)]
pub enum WifErrorKind {
    InvalidLen,
    InvalidPrefix,
    InvalidChecksum,
    InvalidBs58Encoding,
}

#[derive(Clone, Debug)]
pub struct WifError {
    pub kind: WifErrorKind,
}

impl WifError {
    pub fn new(kind: WifErrorKind) -> WifError {
        WifError { kind }
    }
}

impl Error for WifError {
    fn description(&self) -> &str {
        match self.kind {
            WifErrorKind::InvalidLen => "invalid length",
            WifErrorKind::InvalidPrefix => "invalid prefix",
            WifErrorKind::InvalidChecksum => "invalid checksum",
            WifErrorKind::InvalidBs58Encoding => "invalid bs58 encoding",
        }
    }

    fn cause(&self) -> Option<&dyn Error> {
        None
    }
}

impl std::fmt::Display for WifError {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        write!(f, "{}", self.description())
    }
}