gpt4 book ai didi

rust - 如何将结构与指定的字节边界对齐?

转载 作者:行者123 更新时间:2023-11-29 07:43:27 25 4
gpt4 key购买 nike

我需要将结构与 Rust 中的 16 字节边界对齐。似乎可以通过 repr attribute 给出对齐的提示,但它不支持这个确切的用例。

我要实现的功能测试是 Foo 这样的类型

assert_eq!(mem::align_of::<Foo>(), 16);

或者,一个结构 Bar 带有一个字段 baz 这样

println!("{:p}", Bar::new().baz);

总是打印一个能被 16 整除的数字。

目前这在 Rust 中可行吗?有任何解决方法吗?

最佳答案

huon 的回答很好,但是已经过时了。

自 Rust 1.25.0 起,you may now align a type to N bytes using the attribute #[repr(align(N))] .它记录在 the reference's Type Layout section 下.请注意,对齐必须是 2 的幂,您不能混合使用 alignpacked 表示,对齐类型可能会向该类型添加额外的填充。 Here's an example of how to use the feature :

#[repr(align(64))]
struct S(u8);

fn main() {
println!("size of S: {}", std::mem::size_of::<S>());
println!("align of S: {}", std::mem::align_of::<S>());
}

关于rust - 如何将结构与指定的字节边界对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32428153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com