Skip to main content

btt/
padding.rs

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}