Merge pull request #99 from Cyperwu/patch-1

修复一些小错误
pull/101/head
KaiserY 7 years ago committed by GitHub
commit a2a70361a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -115,7 +115,7 @@ impl Summarizable for WeatherForecast {
另外这段代码假设 `Summarizable` 是一个公有 trait这是因为示例 10-12 中 `trait` 之前使用了 `pub` 关键字。 另外这段代码假设 `Summarizable` 是一个公有 trait这是因为示例 10-12 中 `trait` 之前使用了 `pub` 关键字。
trait 实现的一个需要注意的限制是:只能在 trait 或对应类型位于我们 crate 本地的时候为其实现 trait。换句话说不允许对外部类型实现外部 trait。例如不能在 `Vec` 上实现 `Display` trait因为 `Display``Vec` 都定义于标准库中。允许在像 `Tweet` 这样作为我们 `aggregator`crate 部分功能的自定义类型上实现标准库中的 trait `Display`。也允许在 `aggregator`crate 中为 `Vec` 实现 `Summarizable`,因为 `Summarizable` 定义此。这个限制是我们称为 **孤儿规则***orphan rule*)的一部分,如果你感兴趣的可以在类型理论中找到它。简单来说,它被称为 orphan rule 是因为其父类型不存在。没有这条规则的话,两个 crate 可以分别对相同类型是实现相同的 trait因而这两个实现会相互冲突Rust 将无从得知应该使用哪一个。因为 Rust 强制执行 orphan rule其他人编写的代码不会破坏你代码反之亦是如此。 trait 实现的一个需要注意的限制是:只能在 trait 或对应类型位于我们 crate 本地的时候为其实现 trait。换句话说不允许对外部类型实现外部 trait。例如不能在 `Vec` 上实现 `Display` trait因为 `Display``Vec` 都定义于标准库中。允许在像 `Tweet` 这样作为我们 `aggregator`crate 部分功能的自定义类型上实现标准库中的 trait `Display`。也允许在 `aggregator`crate 中为 `Vec` 实现 `Summarizable`,因为 `Summarizable` 定义此。这个限制是我们称为 **孤儿规则***orphan rule*)的一部分,如果你感兴趣的可以在类型理论中找到它。简单来说,它被称为 orphan rule 是因为其父类型不存在。没有这条规则的话,两个 crate 可以分别对相同类型是实现相同的 trait因而这两个实现会相互冲突Rust 将无从得知应该使用哪一个。因为 Rust 强制执行 orphan rule其他人编写的代码不会破坏你代码反之亦是如此。
### 默认实现 ### 默认实现
@ -311,7 +311,7 @@ fn main() {
### 使用 trait bound 有条件的实现方法 ### 使用 trait bound 有条件的实现方法
通过使用带有 trati bound 的泛型 `impl` 块,可以有条件的只为实现了特定 trait 的类型实现方法。例如,示例 10-17 中的类型 `Pair<T>` 总是实现了 `new` 方法,不过只有 `Pair<T>` 内部的 `T` 实现了 `PartialOrd` trait 来允许比较和 `Display` trait 来启用打印,才会实现 `cmp_display` 通过使用带有 trait bound 的泛型 `impl` 块,可以有条件的只为实现了特定 trait 的类型实现方法。例如,示例 10-17 中的类型 `Pair<T>` 总是实现了 `new` 方法,不过只有 `Pair<T>` 内部的 `T` 实现了 `PartialOrd` trait 来允许比较和 `Display` trait 来启用打印,才会实现 `cmp_display`
```rust ```rust
use std::fmt::Display; use std::fmt::Display;

Loading…
Cancel
Save