修正语句问题。

pull/872/head
须语 1 week ago
parent 9273486134
commit 9787308aa2

@ -209,13 +209,13 @@ pub trait Future {
现在我们已经掌握足够的知识来理解示例 17-17 中对 `join_all` 调用所报告的错误了。最初我们尝试将异步代码块产生的 future 移动进 `Vec<Box<dyn Future<Output = ()>>>` 中,不过正如之前所见,这些 future 可能包含内部引用,因此它们并未实现 `Unpin`。它们需要被 pin 住,接下来就可以将 `Pin` 类型传入 `Vec`,并确信 future 底层的数据**不会**被移动。 现在我们已经掌握足够的知识来理解示例 17-17 中对 `join_all` 调用所报告的错误了。最初我们尝试将异步代码块产生的 future 移动进 `Vec<Box<dyn Future<Output = ()>>>` 中,不过正如之前所见,这些 future 可能包含内部引用,因此它们并未实现 `Unpin`。它们需要被 pin 住,接下来就可以将 `Pin` 类型传入 `Vec`,并确信 future 底层的数据**不会**被移动。
`Pin``Unpin` 在编写底层代码库或你自己编写运行时的时候最为重要,而不是在日常的 Rust 代码中。不过,现在当你在错误信息中看到这些 trait 时,就能想出更好的方式如何来修复代码了! `Pin``Unpin` 在编写底层代码库或你自己编写运行时的时候最为重要,而不是在日常的 Rust 代码中。不过,现在当你在错误信息中看到这些 trait 时,就能想出更好的方式来修复代码了!
> 注意:`Pin` 与 `Unpin` 的组合使得可以安全地实现在 Rust 中原本因自引用而难以实现的一整类复杂类型。要求 `Pin` 的类型在如今的异步 Rust 中最为常见,不过偶尔你也会在其它上下文中见到它们。 > 注意:`Pin` 与 `Unpin` 的组合使得可以安全地实现在 Rust 中原本因自引用而难以实现的一整类复杂类型。要求 `Pin` 的类型在如今的异步 Rust 中最为常见,不过偶尔你也会在其它上下文中见到它们。
> >
> `Pin``Unpin` 如何工作的细节,以及它们要求维护的规则,在 `std::pin` 的 API 文档中有详尽的介绍,所以如果你有兴趣学习更多,这是一个很好的起点。 > `Pin``Unpin` 如何工作的细节,以及它们要求维护的规则,在 `std::pin` 的 API 文档中有详尽的介绍,所以如果你有兴趣学习更多,这是一个很好的起点。
> >
> 如果你更深入地理解底层是如何实现的细节,请查看 [_Asynchronous Programming in Rust_][async-book] 的[第二章][under-the-hood]和[第四章][pinning]。 > 如果你希望更深入地理解底层是如何实现的细节,请查看 [_Asynchronous Programming in Rust_][async-book] 的[第二章][under-the-hood]和[第四章][pinning]。
### `Stream` trait ### `Stream` trait

@ -60,7 +60,7 @@
## 总结 ## 总结
这并不会是本书中你最后一次接触并发。[第二一章][ch21] 中的项目会在一个更加真实的场景中运用这些概念,而不是这里讨论的简单示例,同时会更直接地比较线程和任务的解决问题方式。 这并不会是本书中你最后一次接触并发。[第二一章][ch21] 中的项目会在一个更加真实的场景中运用这些概念,而不是这里讨论的简单示例,同时会更直接地比较线程和任务的解决问题方式。
无论你选择何种方式Rust 提供了编写安全、快速和并发代码的工具 -- 无论是用于高吞吐量 web 服务器或是用于嵌入式操作系统。 无论你选择何种方式Rust 提供了编写安全、快速和并发代码的工具 -- 无论是用于高吞吐量 web 服务器或是用于嵌入式操作系统。

@ -3,4 +3,4 @@
<!-- https://github.com/rust-lang/book/blob/main/src/ch18-00-oop.md --> <!-- https://github.com/rust-lang/book/blob/main/src/ch18-00-oop.md -->
<!-- commit 56ec353290429e6547109e88afea4de027b0f1a9 --> <!-- commit 56ec353290429e6547109e88afea4de027b0f1a9 -->
面向对象编程Object-Oriented ProgrammingOOP是一种对程序进行建模方式。对象Object作为一个编程概念来源于 20 世纪 60 年代的 Simula 编程语言。这些对象影响了 Alan Kay 的编程架构,该架构中对象之间互相传递消息。他于 1967 年创造了**面向对象编程***object-oriented programming*)这一术语。对于 OOP 的定义众说纷纭在一些定义下Rust 是面向对象的在其他定义下Rust 不是。在本章节中,我们会探索一些被普遍认为是面向对象的特性和这些特性是如何体现在 Rust 语言习惯中的。接着会展示如何在 Rust 中实现面向对象设计模式,并讨论这么做与利用 Rust 自身的一些优势实现的方案相比有什么取舍。 面向对象编程Object-Oriented ProgrammingOOP是一种对程序进行建模方式。对象Object作为一个编程概念来源于 20 世纪 60 年代的 Simula 编程语言。这些对象影响了 Alan Kay 的编程架构,该架构中对象之间互相传递消息。他于 1967 年创造了**面向对象编程***object-oriented programming*)这一术语。对于 OOP 的定义众说纷纭在一些定义下Rust 是面向对象的在其他定义下Rust 不是。在本章节中,我们会探索一些被普遍认为是面向对象的特性和这些特性是如何体现在 Rust 语言习惯中的。接着会展示如何在 Rust 中实现面向对象设计模式,并讨论这么做与利用 Rust 自身的一些优势实现的方案相比有什么取舍。

Loading…
Cancel
Save