1pub trait Padding: Copy {
2 fn padding(self) -> Option<u8>;
3
4 #[inline]
5 fn eq(self, other: u8) -> bool {
6 self.padding() == Some(other)
7 }
8}
9
10#[derive(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
11pub struct Unpadded;
12
13impl Padding for Unpadded {
14 #[inline]
15 fn padding(self) -> Option<u8> {
16 None
17 }
18}
19
20impl Padding for u8 {
21 #[inline]
22 fn padding(self) -> Option<u8> {
23 Some(self)
24 }
25}
26
27impl Padding for Option<u8> {
28 #[inline]
29 fn padding(self) -> Option<u8> {
30 self
31 }
32}
33
34#[derive(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
35pub struct Equals;
36
37impl Padding for Equals {
38 #[inline]
39 fn padding(self) -> Option<u8> {
40 Some(b'=')
41 }
42}