mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-03-14 03:10:44 +08:00
Update Ch10
This commit is contained in:
parent
1eb4bde4b0
commit
0e1e01e3f1
@ -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
|
||||
```
|
||||
|
||||
|
||||
这样的函数签名,就不那么杂乱无章了:函数名、参数列表与返回值类型紧挨在一起,与未带有很多特质边界的某个函数类似。
|
||||
这个函数的签名,就不那么杂乱无章了:函数名、参数清单与返回值类型紧挨在一起,类似于与不带有很多特质边界的函数。
|
||||
|
||||
|
||||
### 实现了特质的返回值类型
|
||||
|
Loading…
Reference in New Issue
Block a user