diff --git a/src/Ch19_Patterns_and_Matching.md b/src/Ch19_Patterns_and_Matching.md index c428072..1055a42 100644 --- a/src/Ch19_Patterns_and_Matching.md +++ b/src/Ch19_Patterns_and_Matching.md @@ -1,23 +1,24 @@ # 模式与匹配 -*模式,patterns* 属于 Rust 中,用于与不论简单,还是复杂的类型结构体,做匹配的一种特别语法。与 `match` 表达式及其他一些构件,other constructs,结合使用模式,就会给到咱们对程序控制流程更多的掌控。模式有以下元素的一些组合构成: +*模式,patterns* 属于 Rust 中的一种特殊语法,用于匹配简单和复杂的类型结构。与 `match` 表达式及其他结构结合使用模式,给予咱们对程序控制流程更多控制。模式由以下元素的一些组合构成: - 字面值 - -- 解构过后的数组、枚举、结构体或元组等,destructured arrays, enums, structs, or tuples - +- 解构后的数组、枚举、结构体或元组 - 变量 +- 通配符 +- 占位符 -- 通配符,wildcards +一些示例模式包括 `x`、`(a, 3)` 和 `Some(Color::Red)` 等。在模式有效的上下文中,这些组件描述了数据的形状。然后,我们的程序会将值与模式匹配,以确定其是否有着正确的数据形状,从而决定继续运行特定的代码片段。 -- 占位符,placeholders +要使用模式,我们就要将其与某个值比较。当模式与值匹配时,我们就会在代码中使用该值的各个部分。回顾第 6 章中使用模式的 `match` 表达式,比如硬币分类机的示例。当值符合模式的形状时,我们可以使用命名的部分。当不符合时,与该模式关联的代码将不会运行。 + +这一章是所有与模式相关的内容的参考。我们将介绍 + +- 使用模式的有效位置、 +- 可证伪与不可证伪模式的区别, +- 以及咱们可能见到的不同类别的模式语法。 -一些示例模式,包括 `x`、`(a, 3)` 及 `Some(Color::Red)` 等。在模式为有效的语境中,这些组件描述了数据的形状,the shape of data。咱们的程序随后就会将一些值,与这些模式做匹配,来判断其是否有着数据的正确形状,而继续运行代码的某个特定片段。 - - -要运用某个模式,咱们就要将其与某个值比较。在该模式与那个值匹配时,咱们在咱们的代码中,使用这个值的那些部分。回顾第 6 章中用到模式的那些 `match` 表达式,比如那个硬币分类机器示例。在值满足模式形状时,咱们就可以使用那些命名的代码片段。而在不满足时,与该模式关系的代码就不会运行。 - -本章时与模式相关全部内容的一个参考。咱们将涵盖运用模式的那些有效位置、可证伪与不可证伪模式的区别,the difference between refutable and irrefutable patterns,以及可能见到的那些不同类别的模式语法。在本章最后,咱们将获悉,如何运用模式来清晰地表达许多概念。 +在这一章结束时,咱们将了解如何使用模式来清晰地表达许多概念。 diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 7eb6537..9c4e1a0 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -133,8 +133,8 @@ - [最后项目:构建多线程的 Web 服务器](Ch21_Final_Project_Building_a_Multithreaded_Web_Server.md) - [构建单线程的 Web 服务器](final_project/single-threaded.md) - - [将这个单线程服务器修改为多线程服务器](final_project/multithreaded.md) - - [优雅关机与内存清理](final_project/graceful_shutdown.md) + - [从单线程服务器到多线程服务器](final_project/multithreaded.md) + - [优雅关机与清理](final_project/graceful_shutdown.md) - [附录](Ch21_Appendix.md) - [A - 关键字](appendix/keywords.md) diff --git a/src/final_project/graceful_shutdown.md b/src/final_project/graceful_shutdown.md index 7389810..3e150d7 100644 --- a/src/final_project/graceful_shutdown.md +++ b/src/final_project/graceful_shutdown.md @@ -1,7 +1,4 @@ -## 优雅关机与内存清理 - -**Graceful Shutdown and Cleanup** - +## 优雅关机和清理 清单 20-20 中的代码,经由线程池而如咱们所设想的那样,异步响应请求。咱们会收到有关 `workers`、`id` 及 `thread` 这三个,咱们未以直接方式用到字段的一些告警,这些告警就提醒了咱们,咱们没有清理任何东西。当咱们使用不那么优雅的 `Ctrl + c` 方式,来挂起主线程时,全部其他线程也会被立即停止,即使他们处于服务某个请求中。 diff --git a/src/final_project/multithreaded.md b/src/final_project/multithreaded.md index e03fcf3..f600f6e 100644 --- a/src/final_project/multithreaded.md +++ b/src/final_project/multithreaded.md @@ -1,7 +1,4 @@ -# 将咱们的单线程服务器改写为多线程服务器 - -**Turning Our Single-Thread Server into a Multithreaded Server** - +# 从单线程服务器到多线程服务器 现在,这个服务器将依次处理每个请求,这意味着其将不会在前一个连接完成处理前,处理后一连接。若服务器收到了越来越多的请求,这种顺序执行就会越来越差。而若该服务器收到了一个要耗费较长时间处理的请求,即使后续的新请求可被快速处理,但其仍将不得不等待直到那个长时间请求完成。咱们需要修复这个问题,但首选,咱们将具体看看这个问题。