use alloc::string::ToString;
use core::fmt;
#[derive(Clone, Copy, Eq, PartialEq)]
pub struct ParseError(password_hash::Error);
impl ParseError {
pub(crate) fn new(err: password_hash::Error) -> Self {
Self(err)
}
}
impl fmt::Debug for ParseError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_tuple("ParseError")
.field(&self.0.to_string())
.finish()
}
}
impl fmt::Display for ParseError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", &self.0)
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum VerifyError {
Parse(ParseError),
PasswordInvalid,
}
impl fmt::Display for VerifyError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Parse(err) => write!(f, "{err}"),
Self::PasswordInvalid => write!(f, "password is invalid"),
}
}
}
impl From<ParseError> for VerifyError {
fn from(err: ParseError) -> VerifyError {
VerifyError::Parse(err)
}
}
#[cfg(feature = "std")]
impl std::error::Error for ParseError {}
#[cfg(feature = "std")]
impl std::error::Error for VerifyError {}