use ::base64::DecodeError;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Base64ErrorKind {
InvalidByte,
InvalidLength,
InvalidLastSymbol,
InvalidPadding,
}
impl Base64ErrorKind {
#[inline]
pub(crate) const fn from_decode_error(error: &DecodeError) -> Self {
match error {
DecodeError::InvalidByte(_, _) => Self::InvalidByte,
DecodeError::InvalidLength(_) => Self::InvalidLength,
DecodeError::InvalidLastSymbol(_, _) => Self::InvalidLastSymbol,
DecodeError::InvalidPadding => Self::InvalidPadding,
}
}
#[inline]
pub(crate) const fn input_index(error: &DecodeError) -> Option<usize> {
match error {
DecodeError::InvalidByte(index, _)
| DecodeError::InvalidLastSymbol(index, _) => Some(*index),
DecodeError::InvalidLength(_) | DecodeError::InvalidPadding => None,
}
}
#[inline]
pub(crate) const fn symbol(error: &DecodeError) -> Option<u8> {
match error {
DecodeError::InvalidByte(_, symbol)
| DecodeError::InvalidLastSymbol(_, symbol) => Some(*symbol),
DecodeError::InvalidLength(_) | DecodeError::InvalidPadding => None,
}
}
#[inline]
pub(crate) const fn input_length(error: &DecodeError) -> Option<usize> {
match error {
DecodeError::InvalidLength(length) => Some(*length),
DecodeError::InvalidByte(_, _)
| DecodeError::InvalidLastSymbol(_, _)
| DecodeError::InvalidPadding => None,
}
}
}