#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct PacketNumber(pub u32);
impl PacketNumber {
pub const ZERO: Self = Self(0);
#[must_use]
pub const fn new(raw: u32) -> Self {
Self(raw)
}
#[must_use]
pub const fn get(self) -> u32 {
self.0
}
#[must_use]
pub const fn next(self) -> Self {
Self(self.0.wrapping_add(1))
}
}
#[cfg(test)]
mod tests {
use super::PacketNumber;
#[test]
fn next_wraps_at_u32_max() {
assert_eq!(PacketNumber::new(u32::MAX).next(), PacketNumber::ZERO);
}
}