Skip to main content

packing/primitive_packing/
u128_pack.rs

1use crate::{
2    Endian,
3    PackedBytes,
4    PackedSize,
5};
6use core::convert::Infallible;
7
8impl PackedSize for u128 {
9    const BYTES: usize = 16;
10}
11
12impl PackedBytes<[u8; Self::BYTES]> for u128 {
13    type Error = Infallible;
14    fn to_bytes<En: Endian>(&self) -> Result<[u8; Self::BYTES], Self::Error> {
15        Ok(if En::IS_LITTLE {
16            self.to_le_bytes()
17        } else {
18            self.to_be_bytes()
19        })
20    }
21    fn from_bytes<En: Endian>(bytes: [u8; Self::BYTES]) -> Result<Self, Self::Error> {
22        Ok(if En::IS_LITTLE {
23            Self::from_le_bytes(bytes)
24        } else {
25            Self::from_be_bytes(bytes)
26        })
27    }
28}