use std::mem;
macro_rules! int_be {
($T:ident, $name:ident, $size:expr) => {
#[inline]
pub fn $name(x: $T) -> [u8; $size] {
unsafe { mem::transmute(x.to_be()) }
}
}
}
int_be!(u16, u16_be, 2);
int_be!(i16, i16_be, 2);
int_be!(u32, u32_be, 4);
int_be!(i32, i32_be, 4);
int_be!(u64, u64_be, 8);
int_be!(i64, i64_be, 8);
macro_rules! int_le {
($T:ident, $name:ident, $size:expr) => {
#[inline]
pub fn $name(x: $T) -> [u8; $size] {
unsafe { mem::transmute(x.to_le()) }
}
}
}
int_le!(u16, u16_le, 2);
int_le!(i16, i16_le, 2);
int_le!(u32, u32_le, 4);
int_le!(i32, i32_le, 4);
int_le!(u64, u64_le, 8);
int_le!(i64, i64_le, 8);
#[test]
fn test_bytes() {
assert_eq!([0xff, 0x01], u16_be(0xff01));
assert_eq!([0x01, 0xff], u16_le(0xff01));
}