Merge pull request #501 from zhibinr/patch-1

修正引用的示例编号
This commit is contained in:
KaiserY 2021-04-21 22:42:13 +08:00 committed by GitHub
commit 6f3bacb9c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,7 +10,7 @@ Rust 的类型系统有一些我们曾经提到但没有讨论过的功能。首
### 为了类型安全和抽象而使用 newtype 模式
newtype 模式可以用于一些其他我们还未讨论的功能,包括静态的确保某值不被混淆,和用来表示一个值的单元。实际上示例 19-23 中已经有一个这样的例子:`Millimeters` 和 `Meters` 结构体都在 newtype 中封装了 `u32` 值。如果编写了一个有 `Millimeters` 类型参数的函数,不小心使用 `Meters` 或普通的 `u32` 值来调用该函数的程序是不能编译的。
newtype 模式可以用于一些其他我们还未讨论的功能,包括静态的确保某值不被混淆,和用来表示一个值的单元。实际上示例 19-15 中已经有一个这样的例子:`Millimeters` 和 `Meters` 结构体都在 newtype 中封装了 `u32` 值。如果编写了一个有 `Millimeters` 类型参数的函数,不小心使用 `Meters` 或普通的 `u32` 值来调用该函数的程序是不能编译的。
另一个 newtype 模式的应用在于抽象掉一些类型的实现细节:例如,封装类型可以暴露出与直接使用其内部私有类型时所不同的公有 API以便限制其功能。
@ -24,7 +24,7 @@ newtype 也可以隐藏其内部的泛型类型。例如,可以提供一个封
type Kilometers = i32;
```
这意味着 `Kilometers``i32`**同义词***synonym*);不同于示例 19-23 中创建的 `Millimeters``Meters` 类型。`Kilometers` 不是一个新的、单独的类型。`Kilometers` 类型的值将被完全当作 `i32` 类型值来对待:
这意味着 `Kilometers``i32`**同义词***synonym*);不同于示例 19-15 中创建的 `Millimeters``Meters` 类型。`Kilometers` 不是一个新的、单独的类型。`Kilometers` 类型的值将被完全当作 `i32` 类型值来对待:
```rust
type Kilometers = i32;