#struct #byte #memory #slice #tiny #instance #backs

as-bytes

获取结构体底层的内存

2 个不稳定版本

0.2.0 2021 年 8 月 31 日
0.1.0 2021 年 8 月 28 日

#150 in #tiny

MIT 许可证

6KB
71

crates-io docs-rs github

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
    ]
);

无运行时依赖