elements/
endian.rs

1macro_rules! define_le_to_array {
2    ($name: ident, $type: ty, $byte_len: expr) => {
3        #[inline]
4        pub fn $name(val: $type) -> [u8; $byte_len] {
5            debug_assert_eq!(::std::mem::size_of::<$type>(), $byte_len); // size_of isn't a constfn in 1.22
6            let mut res = [0; $byte_len];
7            for i in 0..$byte_len {
8                res[i] = ((val >> i*8) & 0xff) as u8;
9            }
10            res
11        }
12    }
13}
14
15define_le_to_array!(u32_to_array_le, u32, 4);
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20
21    #[test]
22    fn endianness_test() {
23        assert_eq!(u32_to_array_le(0xdead_beef), [0xef, 0xbe, 0xad, 0xde]);
24    }
25}