number_bytes/
endianness.rs1use crate::{FromBytesResult, NumberBytes};
2
3pub enum NumberBytesEndianness {
4 NativeEndian,
5 BigEndian,
6 LittleEndian,
7}
8
9trait NumberBytesEndiannessExt: Sized {
10 fn from_bytes(bytes: &[u8], endianness: NumberBytesEndianness) -> FromBytesResult<Self>;
11 fn to_bytes(self, endianness: NumberBytesEndianness) -> Vec<u8>;
12}
13
14impl<T> NumberBytesEndiannessExt for T where T: NumberBytes {
15 fn from_bytes(bytes: &[u8], endianness: NumberBytesEndianness) -> FromBytesResult<Self> {
16 match endianness {
17 NumberBytesEndianness::NativeEndian => Self::from_ne_bytes(bytes),
18 NumberBytesEndianness::BigEndian => Self::from_be_bytes(bytes),
19 NumberBytesEndianness::LittleEndian => Self::from_le_bytes(bytes),
20 }
21 }
22
23 fn to_bytes(self, endianness: NumberBytesEndianness) -> Vec<u8> {
24 match endianness {
25 NumberBytesEndianness::NativeEndian => self.to_ne_bytes(),
26 NumberBytesEndianness::BigEndian => self.to_be_bytes(),
27 NumberBytesEndianness::LittleEndian => self.to_le_bytes(),
28 }
29 }
30}