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
```
样的函数签名,就不那么杂乱无章了:函数名、参数列表与返回值类型紧挨在一起,与未带有很多特质边界的某个函数类似
函数签名,就不那么杂乱无章了:函数名、参数清单与返回值类型紧挨在一起,类似于与不带有很多特质边界的函数
### 实现了特质的返回值类型