http3 0.1.0

An async HTTP/3 implementation.
Documentation
#[derive(Debug, Default, PartialEq, Clone)]
pub struct BitWindow {
    pub byte: usize,
    pub bit: usize,
    pub count: usize,
}

impl BitWindow {
    pub fn new() -> Self {
        Self::default()
    }

    pub fn forwards(&mut self, step: usize) {
        self.bit += self.count;

        self.byte += self.bit / 8;
        self.bit %= 8;

        self.count = step;
    }

    pub fn end(&self) -> Option<usize> {
        self.byte
            .checked_mul(8)?
            .checked_add(self.bit)?
            .checked_add(self.count)
    }
}