复合数据类型,又称做自定义类型,共分为几类:

  • Struct 结构体
  • Enum 枚举
  • tuple 元组

所有的复合数据类型都是有其他数据类型组合起来的,这里其他数据类型可能是基本数据类型,也可能是自定义数据类型。我将组成复合数据类型的类型称为字段,更好说明。
注意:rust中复杂类型的内存布局与c语言内存布局并不一致,具体说明查看rust死灵书。

struct

结构体分为三种:

  • 具名字段 结构体
  • 元组结构体
  • 单元结构体

具体代码如下:

  1. struct Regular { //具名字段结构体
  2. field1: f32,
  3. field2: String,
  4. pub field3: bool
  5. }
  6. struct Tuple(u32, String);//元组结构体
  7. struct Unit;//单元结构体

enum

一个典型的枚举声明如下。

  1. enum ComplexEnum {
  2. Nothing,
  3. Something(u32),
  4. LotsOfThings {
  5. usual_struct_stuff: bool,
  6. blah: String,
  7. }
  8. }

tuple

元组类型,已讲过。