qubit_codec_misc/
base64_error_kind.rs1use ::base64::DecodeError;
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq)]
14pub enum Base64ErrorKind {
15 InvalidByte,
17 InvalidLength,
19 InvalidLastSymbol,
21 InvalidPadding,
23}
24
25impl Base64ErrorKind {
26 #[inline]
28 pub(crate) const fn from_decode_error(error: &DecodeError) -> Self {
29 match error {
30 DecodeError::InvalidByte(_, _) => Self::InvalidByte,
31 DecodeError::InvalidLength(_) => Self::InvalidLength,
32 DecodeError::InvalidLastSymbol { .. } => Self::InvalidLastSymbol,
33 DecodeError::InvalidPadding => Self::InvalidPadding,
34 }
35 }
36
37 #[inline]
39 pub(crate) const fn input_index(error: &DecodeError) -> Option<usize> {
40 match error {
41 DecodeError::InvalidByte(index, _) | DecodeError::InvalidLastSymbol { offset: index, .. } => Some(*index),
42 DecodeError::InvalidLength(_) | DecodeError::InvalidPadding => None,
43 }
44 }
45
46 #[inline]
48 pub(crate) const fn symbol(error: &DecodeError) -> Option<u8> {
49 match error {
50 DecodeError::InvalidByte(_, symbol) | DecodeError::InvalidLastSymbol { symbol, .. } => Some(*symbol),
51 DecodeError::InvalidLength(_) | DecodeError::InvalidPadding => None,
52 }
53 }
54
55 #[inline]
58 pub(crate) const fn input_length(error: &DecodeError) -> Option<usize> {
59 match error {
60 DecodeError::InvalidLength(length) => Some(*length),
61 DecodeError::InvalidByte(_, _) | DecodeError::InvalidLastSymbol { .. } | DecodeError::InvalidPadding => {
62 None
63 }
64 }
65 }
66}