use std::fmt::{Display, Formatter};
#[derive(Debug, PartialEq, Eq, PartialOrd, Hash, Clone, Copy)]
pub enum Version {
Classic,
Rfc,
RfcDraft8,
}
const BYTES_VER_CLASSIC: &'static [u8] = &[0x00, 0x00, 0x00, 0x00];
const STR_VER_CLASSIC: &'static str = "Classic";
const BYTES_VER_RFC: &'static [u8] = &[0x01, 0x00, 0x00, 0x00];
const STR_VER_RFC: &'static str = "Rfc";
const BYTES_VER_RFC_DRAFT8: &'static [u8] = &[0x08, 0x00, 0x00, 0x80];
const STR_VER_RFC_DRAFT8: &'static str = "RfcDraft8";
impl Version {
pub const fn wire_bytes(self) -> &'static [u8] {
match self {
Version::Classic => BYTES_VER_CLASSIC,
Version::Rfc => BYTES_VER_RFC,
Version::RfcDraft8 => BYTES_VER_RFC_DRAFT8,
}
}
pub const fn to_string(&self) -> &'static str {
match self {
Version::Classic => STR_VER_CLASSIC,
Version::Rfc => STR_VER_RFC,
Version::RfcDraft8 => STR_VER_RFC_DRAFT8,
}
}
}
impl Display for Version {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.to_string())
}
}