动态大小类型
大多数类型在编译时具有固定的大小,并实现了 Sized 特型。大小仅在运行时已知的类型被称为 动态大小类型 (DST) ,或者非正式地称为不定长类型。 切片、 特型对象 和 str 是 DST 的示例。
这类类型只能在某些情况下使用:
- 指向 DST 的 指针类型 是定长的,但其大小是定长类型指针的两倍
- 指向切片和
str的指针还存储了元素的数量。 - 指向特型对象的指针还存储了一个指向 vtable 的指针。
- 指向切片和
- DST 可以作为具有特殊
?Sized边界的泛型类型参数的类型参数提供。当相应的关联类型声明具有?Sized边界时,它们也可以用于关联类型定义。默认情况下,任何类型参数或关联类型都具有Sized边界,除非使用?Sized将其放宽。
- 可以为 DST 实现特型。与泛型类型参数不同,在特型定义中
Self: ?Sized是默认的。
- 结构体可以将 DST 作为其最后一个字段;这使得结构体本身也成为一个 DST 。