联合体 Unions

跟 structs/enums 不同, 联合体 unions 是在较新的版本中才引入的类型, 引入这种类型主要还是考虑 与 C/C++ 语言兼容. 联合体在现代化的语言中使用并不多.

所谓的联合体, 就是对于一块内存, 使用不同的结构去解析它, 读取或者修改它. 比如, 把它的内部作为 int64 或者作为一个函数指针.

本文先展示一些联合体的使用示例, 之后重点介绍它的内存布局.

联合体主要用于 FFI, 这方面在后面的章节会有更多介绍, 在这里我们要清楚, 对于联合体的操作都是不安全的, 需要 unsafe 来释放编译器的限制. 联合体的出现, 主要是为了节省内存, 但是对它的操作, 可能会 触发未定义行为.