o [`BigEndian`], [`LittleEndian`], [`NativeEndian`], and [`NetworkEndian`]. An `I16` can be constructed using the [`new`] method, and its contained value can be obtained as a native `i16` 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 `I16` has endianness `O` and that, b) the layout of `i16` has the platform's native endianness. `I16` 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. [`new`]: crate::byteorder::I16::new [`get`]: crate::byteorder::I16::get [`set`]: crate::byteorder::I16::set [`FromBytes`]: crate::FromBytes [`IntoBytes`]: crate::IntoBytes [`Unaligned`]: crate::Unaligned