联合体 Unions
跟 structs/enums 不同, 联合体 unions 是在较新的版本中才引入的类型, 引入这种类型主要还是考虑 与 C/C++ 语言兼容. 联合体在现代化的语言中使用并不多.
所谓的联合体, 就是对于一块内存, 使用不同的结构去解析它, 读取或者修改它. 比如, 把它的内部作为
int64
或者作为一个函数指针.
本文先展示一些联合体的使用示例, 之后重点介绍它的内存布局.
联合体主要用于 FFI, 这方面在后面的章节会有更多介绍, 在这里我们要清楚, 对于联合体的操作都是不安全的,
需要 unsafe
来释放编译器的限制. 联合体的出现, 主要是为了节省内存, 但是对它的操作, 可能会
触发未定义行为.