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, _)
42 | DecodeError::InvalidLastSymbol { offset: index, .. } => Some(*index),
43 DecodeError::InvalidLength(_) | DecodeError::InvalidPadding => None,
44 }
45 }
46
47 #[inline]
49 pub(crate) const fn symbol(error: &DecodeError) -> Option<u8> {
50 match error {
51 DecodeError::InvalidByte(_, symbol) | DecodeError::InvalidLastSymbol { symbol, .. } => {
52 Some(*symbol)
53 }
54 DecodeError::InvalidLength(_) | DecodeError::InvalidPadding => None,
55 }
56 }
57
58 #[inline]
61 pub(crate) const fn input_length(error: &DecodeError) -> Option<usize> {
62 match error {
63 DecodeError::InvalidLength(length) => Some(*length),
64 DecodeError::InvalidByte(_, _)
65 | DecodeError::InvalidLastSymbol { .. }
66 | DecodeError::InvalidPadding => None,
67 }
68 }
69}