#[derive(Default, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(transparent)]
pub struct PriorityValue(u8);
impl NumberAsBytes for PriorityValue
{
fn number_as_bytes(self, bytes_index: usize, bytes: &mut [u8], radix: Radix, non_numeric_digit_case: NonNumericDigitCase) -> usize
{
self.0.number_as_bytes(bytes_index, bytes, radix, non_numeric_digit_case)
}
}
impl PriorityValue
{
const Scalar: u8 = 8;
#[inline(always)]
fn as_u8(self) -> u8
{
self.0
}
#[inline(always)]
pub const fn known_facility(self) -> KnownFacility
{
let facility = self.facility();
cfn_debug_assert!(facility.raw_value_is_known());
unsafe { facility.known }
}
#[inline(always)]
pub const fn facility(self) -> Facility
{
unsafe { transmute(self.0 / Self::Scalar) }
}
#[inline(always)]
pub const fn severity(self) -> Severity
{
unsafe { transmute(self.0 % Self::Scalar) }
}
#[inline(always)]
pub const fn from_facility_and_severity(known_facility: KnownFacility, severity: Severity) -> Self
{
Self(((known_facility as u8) * 8) + (severity as u8))
}
}