]>
git.proxmox.com Git - rustc.git/blob - vendor/byte-tools/src/write_single.rs
3 macro_rules
! write_single
{
4 ($dst
:expr
, $n
:expr
, $size
:expr
, $which
:ident
) => ({
5 assert
!($size
== $dst
.len());
7 let bytes
= mem
::transmute
::<_
, [u8; $size
]>($n
.$
which());
8 ptr
::copy_nonoverlapping((&bytes
).as_ptr(), $dst
.as_mut_ptr(), $size
);
13 /// Write a u32 into a vector, which must be 4 bytes long. The value is written
14 /// in little-endian format.
16 pub fn write_u32_le(dst
: &mut [u8], n
: u32) {
17 write_single
!(dst
, n
, 4, to_le
);
20 /// Write a u32 into a vector, which must be 4 bytes long. The value is written
21 /// in big-endian format.
23 pub fn write_u32_be(dst
: &mut [u8], n
: u32) {
24 write_single
!(dst
, n
, 4, to_be
);
27 /// Write a u64 into a vector, which must be 8 bytes long. The value is written
28 /// in little-endian format.
30 pub fn write_u64_le(dst
: &mut [u8], n
: u64) {
31 write_single
!(dst
, n
, 8, to_le
);
34 /// Write a u64 into a vector, which must be 8 bytes long. The value is written
35 /// in big-endian format.
37 pub fn write_u64_be(dst
: &mut [u8], n
: u64) {
38 write_single
!(dst
, n
, 8, to_be
);