Sized 与 ?Sized

实现了 Sized trait 的类型, 在编译期可以确定内存大小.

Sized trait 是默认实现的.

struct S<T> { }

这种写法等同于:

struct S<T: Sized> { }

以下写法就表示类型 T 不一定必须是 Sized trait, 所以 ?Sized 也被称为 Unsized trait:

struct S<T: ?Sized> { }