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 { offset: 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,
}
}
}