为什么会出现repr(...)
Rust 默认使用 优化布局(optimized layout):
- 字段顺序可以被重排(为了减少 padding)
- 对齐由平台 ABI+ Rust 自己的规则决定
- 枚举的表示(tag、payload)是可优化的,不保证稳定
- ZST、DST 会被做特殊处理
我们在代码里面构造的结构体:
struct Foo {
a: u8,
b: u32,
c: u16,
}
2025/11/26大约 6 分钟
repr(...)Rust 默认使用 优化布局(optimized layout):
我们在代码里面构造的结构体:
struct Foo {
a: u8,
b: u32,
c: u16,
}
在学习 Tokio 与 Rust 异步编程的过程中,我时常会遇到各种 unsafe 语法与底层原语,实现方式也常常带着“黑魔法”般的精巧与惊奇。为了系统地消化这些内容,我计划开启一个全新的系列,用于记录自己在阅读 Rust 黑魔法(底层实现、编译器行为、不安全代码)过程中产生的一系列思考与笔记。
除了 Rust 本身,本系列也会同步梳理相关的计算机基础知识,包括内存模型、并发原理、数据布局、指针语义、调度器机制等与“黑魔法”紧密联系的主题。本系列不强调固定的章节结构,将以探索式写作为主。至于何时完结,则取决于我能否把整个 unsafe 体系贯穿得足够完整。