#[repr(u32)]
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
#[derive(Serialize, Deserialize)]
pub enum InternetProtocolVersion4MaskBits
{
#[cfg(target_endian = "big")] _0 = 0x00000000,
#[cfg(target_endian = "little")] _0 = 0x00000000,
#[cfg(target_endian = "big")] _1 = 0x80000000,
#[cfg(target_endian = "little")] _1 = 0x00000080,
#[cfg(target_endian = "big")] _2 = 0xC0000000,
#[cfg(target_endian = "little")] _2 = 0x000000C0,
#[cfg(target_endian = "big")] _3 = 0xE0000000,
#[cfg(target_endian = "little")] _3 = 0x000000E0,
#[cfg(target_endian = "big")] _4 = 0xF0000000,
#[cfg(target_endian = "little")] _4 = 0x000000F0,
#[cfg(target_endian = "big")] _5 = 0xF8000000,
#[cfg(target_endian = "little")] _5 = 0x000000F8,
#[cfg(target_endian = "big")] _6 = 0xFC000000,
#[cfg(target_endian = "little")] _6 = 0x000000FC,
#[cfg(target_endian = "big")] _7 = 0xFE000000,
#[cfg(target_endian = "little")] _7 = 0x000000FE,
#[cfg(target_endian = "big")] _8 = 0xFF000000,
#[cfg(target_endian = "little")] _8 = 0x000000FF,
#[cfg(target_endian = "big")] _9 = 0xFF800000,
#[cfg(target_endian = "little")] _9 = 0x000080FF,
#[cfg(target_endian = "big")] _10 = 0xFFC00000,
#[cfg(target_endian = "little")] _10 = 0x0000C0FF,
#[cfg(target_endian = "big")] _11 = 0xFFE00000,
#[cfg(target_endian = "little")] _11 = 0x0000E0FF,
#[cfg(target_endian = "big")] _12 = 0xFFF00000,
#[cfg(target_endian = "little")] _12 = 0x0000F0FF,
#[cfg(target_endian = "big")] _13 = 0xFFF80000,
#[cfg(target_endian = "little")] _13 = 0x0000F8FF,
#[cfg(target_endian = "big")] _14 = 0xFFFC0000,
#[cfg(target_endian = "little")] _14 = 0x0000FCFF,
#[cfg(target_endian = "big")] _15 = 0xFFFE0000,
#[cfg(target_endian = "little")] _15 = 0x0000FEFF,
#[cfg(target_endian = "big")] _16 = 0xFFFF0000,
#[cfg(target_endian = "little")] _16 = 0x0000FFFF,
#[cfg(target_endian = "big")] _17 = 0xFFFF8000,
#[cfg(target_endian = "little")] _17 = 0x0080FFFF,
#[cfg(target_endian = "big")] _18 = 0xFFFFC000,
#[cfg(target_endian = "little")] _18 = 0x00C0FFFF,
#[cfg(target_endian = "big")] _19 = 0xFFFFE000,
#[cfg(target_endian = "little")] _19 = 0x00E0FFFF,
#[cfg(target_endian = "big")] _20 = 0xFFFFF000,
#[cfg(target_endian = "little")] _20 = 0x00F0FFFF,
#[cfg(target_endian = "big")] _21 = 0xFFFFF800,
#[cfg(target_endian = "little")] _21 = 0x00F8FFFF,
#[cfg(target_endian = "big")] _22 = 0xFFFFFC00,
#[cfg(target_endian = "little")] _22 = 0x00FCFFFF,
#[cfg(target_endian = "big")] _23 = 0xFFFFFE00,
#[cfg(target_endian = "little")] _23 = 0x00FEFFFF,
#[cfg(target_endian = "big")] _24 = 0xFFFFFF00,
#[cfg(target_endian = "little")] _24 = 0x00FFFFFF,
#[cfg(target_endian = "big")] _25 = 0xFFFFFF80,
#[cfg(target_endian = "little")] _25 = 0x80FFFFFF,
#[cfg(target_endian = "big")] _26 = 0xFFFFFFC0,
#[cfg(target_endian = "little")] _26 = 0xC0FFFFFF,
#[cfg(target_endian = "big")] _27 = 0xFFFFFFE0,
#[cfg(target_endian = "little")] _27 = 0xE0FFFFFF,
#[cfg(target_endian = "big")] _28 = 0xFFFFFFF0,
#[cfg(target_endian = "little")] _28 = 0xF0FFFFFF,
#[cfg(target_endian = "big")] _29 = 0xFFFFFFF8,
#[cfg(target_endian = "little")] _29 = 0xF8FFFFFF,
#[cfg(target_endian = "big")] _30 = 0xFFFFFFFC,
#[cfg(target_endian = "little")] _30 = 0xFCFFFFFF,
#[cfg(target_endian = "big")] _31 = 0xFFFFFFFE,
#[cfg(target_endian = "little")] _31 = 0xFEFFFFFF,
#[cfg(target_endian = "big")] _32 = 0xFFFFFFFF,
#[cfg(target_endian = "little")] _32 = 0xFFFFFFFF,
}
impl Display for InternetProtocolVersion4MaskBits
{
#[inline(always)]
fn fmt(&self, f: &mut Formatter) -> fmt::Result
{
use self::InternetProtocolVersion4MaskBits::*;
let string = match *self
{
_0 => "0",
_1 => "1",
_2 => "2",
_3 => "3",
_4 => "4",
_5 => "5",
_6 => "6",
_7 => "7",
_8 => "8",
_9 => "9",
_10 => "10",
_11 => "11",
_12 => "12",
_13 => "13",
_14 => "14",
_15 => "15",
_16 => "16",
_17 => "17",
_18 => "18",
_19 => "19",
_20 => "20",
_21 => "21",
_22 => "22",
_23 => "23",
_24 => "24",
_25 => "25",
_26 => "26",
_27 => "27",
_28 => "28",
_29 => "29",
_30 => "30",
_31 => "31",
_32 => "32",
};
write!(f, "{}", string)
}
}
impl InternetProtocolMaskBits for InternetProtocolVersion4MaskBits
{
#[inline(always)]
fn as_depth(self) -> u8
{
let mask_bits = self as u32;
if cfg!(target_endian = "little")
{
mask_bits.count_ones() as u8
}
else
{
(!mask_bits).trailing_zeros() as u8
}
}
}