use std::fmt;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Checksum {
Adler32(u32),
Crc32(u32),
}
impl Checksum {
#[must_use]
pub const fn value(self) -> u32 {
match self {
Self::Adler32(value) | Self::Crc32(value) => value,
}
}
#[must_use]
#[inline]
pub const fn is_adler32(self) -> bool {
matches!(self, Self::Adler32(_))
}
#[must_use]
#[inline]
pub const fn is_crc32(self) -> bool {
matches!(self, Self::Crc32(_))
}
}
impl Default for Checksum {
fn default() -> Self {
Self::Crc32(0)
}
}
impl fmt::Display for Checksum {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Adler32(checksum) | Self::Crc32(checksum) => write!(f, "{checksum}"),
}
}
}