|
|
|
@ -88,7 +88,7 @@ fn generic<T: Sized>(t: T) {
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
在上面,Rust 自动添加的特征约束 `T: Sized`,表示泛型函数只能用于一切实现了 `Sized` 特征的类型上,而**所有在编译时就能知道其大小的类型,都会自动实现 `Sized` 特征**,例如。。。。也没啥好例如的,你能想到的几乎类型都实现了 `Sized` 特征,除了上面那个坑坑的 `str`,哦,还有特征。
|
|
|
|
|
在上面,Rust 自动添加的特征约束 `T: Sized`,表示泛型函数只能用于一切实现了 `Sized` 特征的类型上,而**所有在编译时就能知道其大小的类型,都会自动实现 `Sized` 特征**,例如。。。。也没啥好例如的,你能想到的几乎所有类型都实现了 `Sized` 特征,除了上面那个坑坑的 `str`,哦,还有特征。
|
|
|
|
|
|
|
|
|
|
**每一个特征都是一个可以通过名称来引用的动态大小类型**。因此如果想把特征作为具体的类型来传递给函数,你必须将其转换成一个特征对象:诸如 `&dyn Trait` 或者 `Box<dyn Trait>` (还有 `Rc<dyn Trait>`)这些引用类型。
|
|
|
|
|
|
|
|
|
|