2 个不稳定版本
0.2.0 | 2021 年 8 月 31 日 |
---|---|
0.1.0 | 2021 年 8 月 28 日 |
#150 in #tiny
6KB
71 行
as-bytes
一个微小的 crate,它提供了结构体实例背后的内存的切片。
use as_bytes::AsBytes;
let i = u32::MAX;
let bytes = unsafe { i.as_bytes() };
assert_eq!(bytes, [255, 255, 255, 255]);
你可以用它来查看结构体的布局。一个用途是测试通过线发送的结构体。下面的示例演示了同一结构体上的两种不同的打包属性。
let packed = ReprPacked {
a: usize::MAX,
b: 0u8,
c: usize::MAX,
};
let bytes = unsafe { packed.as_bytes() };
assert_eq!(
bytes,
[255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255]
);
let packed = ReprC {
a: usize::MAX,
b: 0u8,
c: usize::MAX,
};
let bytes = unsafe { packed.as_bytes() };
assert_eq!(
bytes,
[
255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255
]
);