scroll/
endian.rs

1#[derive(PartialEq, Eq, Copy, Debug, Clone)]
2/// The endianness (byte order) of a stream of bytes
3pub enum Endian {
4    Little,
5    Big,
6}
7
8/// Little Endian byte order context
9pub const LE: Endian = Endian::Little;
10/// Big Endian byte order context
11pub const BE: Endian = Endian::Big;
12/// Network byte order context
13pub const NETWORK: Endian = Endian::Big;
14#[cfg(target_endian = "little")]
15/// The machine's native byte order
16pub const NATIVE: Endian = LE;
17#[cfg(target_endian = "big")]
18/// The machine's native byte order
19pub const NATIVE: Endian = BE;
20
21impl Default for Endian {
22    #[inline]
23    fn default() -> Self {
24        NATIVE
25    }
26}
27
28impl From<bool> for Endian {
29    #[inline]
30    fn from(little_endian: bool) -> Self {
31        if little_endian { LE } else { BE }
32    }
33}
34
35impl Endian {
36    #[inline]
37    pub fn network() -> Endian {
38        NETWORK
39    }
40    #[inline]
41    pub fn is_little(&self) -> bool {
42        *self == LE
43    }
44}