pub trait Padding: Copy {
fn padding(self) -> Option<u8>;
#[inline]
fn eq(self, other: u8) -> bool {
self.padding() == Some(other)
}
}
#[derive(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct Unpadded;
impl Padding for Unpadded {
#[inline]
fn padding(self) -> Option<u8> {
None
}
}
impl Padding for u8 {
#[inline]
fn padding(self) -> Option<u8> {
Some(self)
}
}
impl Padding for Option<u8> {
#[inline]
fn padding(self) -> Option<u8> {
self
}
}
#[derive(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct Equals;
impl Padding for Equals {
#[inline]
fn padding(self) -> Option<u8> {
Some(b'=')
}
}