Struct U16
struct U16<O>(_, _)
A 16-bit unsigned integer stored in a given byte order.
U16 is like the native u16 type with
two major differences: First, it has no alignment requirement (its alignment is 1).
Second, the endianness of its memory layout is given by the type parameter O,
which can be any type which implements ByteOrder. In particular, this refers
to BigEndian, LittleEndian, NativeEndian, and NetworkEndian.
A U16 can be constructed using
the new method, and its contained value can be obtained as a native
u16 using the get method, or updated in place with
the set method. In all cases, if the endianness O is not the same as the
endianness of the current platform, an endianness swap will be performed in
order to uphold the invariants that a) the layout of U16
has endianness O and that, b) the layout of u16 has
the platform's native endianness.
U16 implements FromBytes, IntoBytes, and Unaligned,
making it useful for parsing and serialization. See the module documentation for an
example of how it can be used for parsing UDP packets.
Implementations
impl<O> U16<O>
const fn from_bytes(bytes: [u8; 2]) -> U16<O>Constructs a new value from bytes which are already in
Obyte order.const fn to_bytes(self: Self) -> [u8; 2]Extracts the bytes of
selfwithout swapping the byte order.The returned bytes will be in
Obyte order.
impl<O: ByteOrder> U16<O>
const fn new(n: u16) -> U16<O>Constructs a new value, possibly performing an endianness swap to guarantee that the returned value has endianness
O.const fn get(self: Self) -> u16Returns the value as a primitive type, possibly performing an endianness swap to guarantee that the return value has the endianness of the native platform.
fn set(self: &mut Self, n: u16)Updates the value in place as a primitive type, possibly performing an endianness swap to guarantee that the stored value has the endianness
O.
impl<O> AsMut for U16<O>
fn as_mut(self: &mut Self) -> &mut [u8; 2]
impl<O> AsRef for U16<O>
fn as_ref(self: &Self) -> &[u8; 2]
impl<O> Default for U16<O>
fn default() -> U16<O>
impl<O> Freeze for U16<O>
impl<O> FromBytes for U16<O>
impl<O> FromZeros for U16<O>
impl<O> Immutable for U16<O>
impl<O> IntoBytes for U16<O>
impl<O> KnownLayout for U16<O>
impl<O> Not for U16<O>
fn not(self: Self) -> U16<O>
impl<O> PartialEq for U16<O>
fn eq(self: &Self, other: &[u8; 2]) -> bool
impl<O> RefUnwindSafe for U16<O>
impl<O> Send for U16<O>
impl<O> StructuralPartialEq for U16<O>
impl<O> Sync for U16<O>
impl<O> TryFromBytes for U16<O>
impl<O> Unaligned for U16<O>
impl<O> Unpin for U16<O>
impl<O> UnsafeUnpin for U16<O>
impl<O> UnwindSafe for U16<O>
impl<O: $crate::clone::Clone> Clone for U16<O>
fn clone(self: &Self) -> U16<O>
impl<O: $crate::cmp::Eq> Eq for U16<O>
impl<O: $crate::cmp::PartialEq> PartialEq for U16<O>
fn eq(self: &Self, other: &U16<O>) -> bool
impl<O: $crate::hash::Hash> Hash for U16<O>
fn hash<__H: $crate::hash::Hasher>(self: &Self, state: &mut __H)
impl<O: $crate::marker::Copy> Copy for U16<O>
impl<O: ByteOrder> Add for U16<O>
fn add(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> Add for U16<O>
fn add(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> AddAssign for U16<O>
fn add_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> AddAssign for U16<O>
fn add_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> Binary for U16<O>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<O: ByteOrder> BitAnd for U16<O>
fn bitand(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> BitAnd for U16<O>
fn bitand(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> BitAndAssign for U16<O>
fn bitand_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> BitAndAssign for U16<O>
fn bitand_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> BitOr for U16<O>
fn bitor(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> BitOr for U16<O>
fn bitor(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> BitOrAssign for U16<O>
fn bitor_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> BitOrAssign for U16<O>
fn bitor_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> BitXor for U16<O>
fn bitxor(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> BitXor for U16<O>
fn bitxor(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> BitXorAssign for U16<O>
fn bitxor_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> BitXorAssign for U16<O>
fn bitxor_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> Debug for U16<O>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<O: ByteOrder> Display for U16<O>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<O: ByteOrder> Div for U16<O>
fn div(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> Div for U16<O>
fn div(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> DivAssign for U16<O>
fn div_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> DivAssign for U16<O>
fn div_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> From for U16<O>
fn from(bytes: [u8; 2]) -> U16<O>
impl<O: ByteOrder> From for U16<O>
fn from(x: u16) -> U16<O>
impl<O: ByteOrder> LowerHex for U16<O>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<O: ByteOrder> Mul for U16<O>
fn mul(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> Mul for U16<O>
fn mul(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> MulAssign for U16<O>
fn mul_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> MulAssign for U16<O>
fn mul_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> Octal for U16<O>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<O: ByteOrder> Ord for U16<O>
fn cmp(self: &Self, other: &Self) -> Ordering
impl<O: ByteOrder> PartialEq for U16<O>
fn eq(self: &Self, other: &u16) -> bool
impl<O: ByteOrder> PartialOrd for U16<O>
fn partial_cmp(self: &Self, other: &Self) -> Option<Ordering>
impl<O: ByteOrder> PartialOrd for U16<O>
fn partial_cmp(self: &Self, other: &u16) -> Option<Ordering>
impl<O: ByteOrder> Rem for U16<O>
fn rem(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> Rem for U16<O>
fn rem(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> RemAssign for U16<O>
fn rem_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> RemAssign for U16<O>
fn rem_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> Shl for U16<O>
fn shl(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> Shl for U16<O>
fn shl(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> ShlAssign for U16<O>
fn shl_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> ShlAssign for U16<O>
fn shl_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> Shr for U16<O>
fn shr(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> Shr for U16<O>
fn shr(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> ShrAssign for U16<O>
fn shr_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> ShrAssign for U16<O>
fn shr_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> Sub for U16<O>
fn sub(self: Self, rhs: U16<O>) -> U16<O>
impl<O: ByteOrder> Sub for U16<O>
fn sub(self: Self, rhs: u16) -> U16<O>
impl<O: ByteOrder> SubAssign for U16<O>
fn sub_assign(self: &mut Self, rhs: U16<O>)
impl<O: ByteOrder> SubAssign for U16<O>
fn sub_assign(self: &mut Self, rhs: u16)
impl<O: ByteOrder> TryFrom for U16<O>
fn try_from(x: u32) -> Result<U16<O>, TryFromIntError>
impl<O: ByteOrder> TryFrom for U16<O>
fn try_from(x: usize) -> Result<U16<O>, TryFromIntError>
impl<O: ByteOrder> TryFrom for U16<O>
fn try_from(x: u128) -> Result<U16<O>, TryFromIntError>
impl<O: ByteOrder> TryFrom for U16<O>
fn try_from(x: u64) -> Result<U16<O>, TryFromIntError>
impl<O: ByteOrder> UpperHex for U16<O>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<O: ByteOrder, P: ByteOrder> TryFrom for U16<O>
fn try_from(x: Usize<P>) -> Result<U16<O>, TryFromIntError>
impl<O: ByteOrder, P: ByteOrder> TryFrom for U16<O>
fn try_from(x: U128<P>) -> Result<U16<O>, TryFromIntError>
impl<O: ByteOrder, P: ByteOrder> TryFrom for U16<O>
fn try_from(x: U64<P>) -> Result<U16<O>, TryFromIntError>
impl<O: ByteOrder, P: ByteOrder> TryFrom for U16<O>
fn try_from(x: U32<P>) -> Result<U16<O>, TryFromIntError>
impl<T> Any for U16<O>
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for U16<O>
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for U16<O>
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for U16<O>
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for U16<O>
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into for U16<O>
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for U16<O>
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for U16<O>
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>