Update Ch10

This commit is contained in:
Unisko PENG 2023-04-14 14:59:25 +08:00
parent 1eb4bde4b0
commit 0e1e01e3f1

View File

@ -721,20 +721,20 @@ pub fn notify(item &(impl Summary + Display)) {
pub fn notify<T: Summary + Display>(item: &T) {
```
有了指定的这两个特质,那么 `notify` 的函数体,便可调用 `summarize` 函数,并可使用 `{}` 来格式化 `item` 了。
有了指定的这两个特质,那么 `notify` 的函数体,便可调用 `summarize` 函数,使用 `{}` 来格式化 `item` 了。
#### 运用 `where` 子句让特质边界更清楚
#### 使用 `where` 子句获得更清楚的特质边界
**Clearer Trait Bounds with `where` Clauses**
过多特质边界的使用有着其负面性。每个泛型都有其自己的特质边界因此带有多个泛型参数的函数就会在函数名字与其参数列表之间包含很多的特质边界信息从而令到该函数签名难于阅读。由于这个原因Rust 就有了在函数签名之后的一个 `where` 子句里头,指定特质边界的这样一种替代性语法。从而与其像下面这样编写函数签名:
使用过多的特质边界有着其一些缺点。每个泛型都有自己的特质边界那么有着多个泛型参数的函数在其名字与其参数列表之间就好包含很多特质边界信息从而令到该函数签名难于阅读。出于这个原因Rust 有着在函数签名之后的 `where` 子句里,指明特质边界的这种替代语法。从而与其写出下面这个签名:
```rust
fn some_function<T: Display + Clone, U: Clone + Debug>(t: &T, u: &U) -> i32 {
```
就可以使用 `where` 子句,写成下面这样
咱们便可像下面这样,使用 `where` 子句
```rust
fn some_function<T, U>(t: &T, u: &U) -> i32
@ -744,7 +744,7 @@ fn some_function<T, U>(t: &T, u: &U) -> i32
```
样的函数签名,就不那么杂乱无章了:函数名、参数列表与返回值类型紧挨在一起,与未带有很多特质边界的某个函数类似
个函数的签名,就不那么杂乱无章了:函数名、参数清单与返回值类型紧挨在一起,类似于与不带有很多特质边界的函数
### 实现了特质的返回值类型