Update Ch10

This commit is contained in:
Unisko PENG 2023-04-12 17:24:39 +08:00
parent a3657db93a
commit d6472c86ec

View File

@ -267,9 +267,9 @@ fn main() {
*清单 10-6保存类型 `T``x``y` 值的 `Point<T>` 结构体*
在结构体定义中使用泛型特性的语法,与在函数定义中用到的类型。首先,这里在紧接着结构体名字之后的尖括号内部,声明了类型参数名字。随后在结构体定义中,在哪些原本会指明具体数据类型的地方,使用了该泛型。
在结构体定义中使用泛型特性的语法,与在函数定义中用到的类似。首先,在紧接着结构体名字之后,咱们于尖括号内部,声明了类型参数的名字。随后咱们在原本指明具体类型的结构体定义中,用到了那个泛型。
请注意由于这里之用的一个泛型来定义 `Point<T>`,此定义是说,这个 `Point<T>` 结构体对某些类型 `T` 通用,且字段 `x``y` *均为*种同样类型,而不论那种类型可能是何种类型。在创建一个有着不同类型值的 `Point<T>` ,即下面清单 10-7 中那样,那么这里的代码就不会编译。
请注意由于咱们只使用了一个泛型来定义 `Point<T>`,那么这个定义就是说,`Point<T>` 结构体对某些类型 `T` 通用,且不论那种类型为何,字段 `x``y` *均为*同一类型。当咱们要创建有着不同类型值的某个 `Point<T>` 时,如下面清单 10-7 中,那么咱们的代码就不会编译。
文件名:`src/main.rs`
@ -286,7 +286,7 @@ fn main() {
*清单 10-7由于字段 `x``y` 有着同一泛型数据类型 `T`,因此他们必须为同一类型*
在此示例中,当这里将整数值 `5` 赋值给 `x` 时,那么就让编译器明白了该 `Point<T>` 实例的泛型 `T`,将是个整数。那么随后在将 `4.0` 指定给那个已被定义为与 `x` 有着同一类型的 `y` 时,就会得到一个像下面这样的类型不匹配错误:
在此示例中,当咱们把整数值 `5` 赋值给 `x` 时,咱们就让编译器明白,这个 `Point<T>` 实例的泛型 `T` 将是个整数。随后在咱们把 `4.0` 指定给那个已被咱们定义为与 `x` 有着同一类型的 `y` 时,咱们将得到一个下面这样的类型不匹配错误:
```console
$ cargo run lennyp@vm-manjaro
@ -301,7 +301,7 @@ For more information about this error, try `rustc --explain E0308`.
error: could not compile `generics_demo` due to previous error
```
要定义一个其中 `x``y` 同时为泛型,又可以有着不同类型的 `Point` 结构体,就可以使用多个泛型参数。比如,在下面清单 10-8 中,就将 `Point` 的定义,修改为了对类型 `T``U` 通用,其中 `x` 为类型 `T`,而 `y` 则是类型 `U`
要定义其中 `x``y` 同时为泛型,又可以有着不同类型的 `Point` 结构体,咱们可使用多个泛型参数。比如,在下面清单 10-8 中,就将 `Point` 的定义,修改为了对类型 `T``U` 通用,其中 `x` 为类型 `T`,而 `y` 则是类型 `U`
文件名:`src/main.rs`