Add more int variants

This commit is contained in:
Dominik Werder
2021-06-06 09:20:15 +02:00
parent abcaaf96be
commit 6f4122ee44
4 changed files with 85 additions and 30 deletions

View File

@@ -24,18 +24,34 @@ pub trait NumFromBytes<NTY, END> {
fn convert(buf: &[u8]) -> NTY;
}
impl NumFromBytes<i32, LittleEndian> for i32 {
fn convert(buf: &[u8]) -> i32 {
i32::from_le_bytes(*arrayref::array_ref![buf, 0, 4])
}
macro_rules! impl_num_from_bytes_end {
($nty:ident, $nl:expr, $end:ident, $ec:ident) => {
impl NumFromBytes<$nty, $end> for $nty {
fn convert(buf: &[u8]) -> $nty {
$nty::$ec(*arrayref::array_ref![buf, 0, $nl])
}
}
};
}
impl NumFromBytes<i32, BigEndian> for i32 {
fn convert(buf: &[u8]) -> i32 {
i32::from_be_bytes(*arrayref::array_ref![buf, 0, 4])
}
macro_rules! impl_num_from_bytes {
($nty:ident, $nl:expr) => {
impl_num_from_bytes_end!($nty, $nl, LittleEndian, from_le_bytes);
impl_num_from_bytes_end!($nty, $nl, BigEndian, from_be_bytes);
};
}
impl_num_from_bytes!(u8, 1);
impl_num_from_bytes!(u16, 2);
impl_num_from_bytes!(u32, 4);
impl_num_from_bytes!(u64, 8);
impl_num_from_bytes!(i8, 1);
impl_num_from_bytes!(i16, 2);
impl_num_from_bytes!(i32, 4);
impl_num_from_bytes!(i64, 8);
impl_num_from_bytes!(f32, 4);
impl_num_from_bytes!(f64, 8);
pub trait EventValueFromBytes<NTY, END>
where
NTY: NumFromBytes<NTY, END>,