mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2026-08-19 04:33:27 +08:00
Updated 'src/Ch19_Patterns_and_Matchging.md'.
This commit is contained in:
@@ -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,以及可能见到的那些不同类别的模式语法。在本章最后,咱们将获悉,如何运用模式来清晰地表达许多概念。
|
||||
在这一章结束时,咱们将了解如何使用模式来清晰地表达许多概念。
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
## 优雅关机与内存清理
|
||||
|
||||
**Graceful Shutdown and Cleanup**
|
||||
|
||||
## 优雅关机和清理
|
||||
|
||||
清单 20-20 中的代码,经由线程池而如咱们所设想的那样,异步响应请求。咱们会收到有关 `workers`、`id` 及 `thread` 这三个,咱们未以直接方式用到字段的一些告警,这些告警就提醒了咱们,咱们没有清理任何东西。当咱们使用不那么优雅的 `Ctrl + c` 方式,来挂起主线程时,全部其他线程也会被立即停止,即使他们处于服务某个请求中。
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
# 将咱们的单线程服务器改写为多线程服务器
|
||||
|
||||
**Turning Our Single-Thread Server into a Multithreaded Server**
|
||||
|
||||
# 从单线程服务器到多线程服务器
|
||||
|
||||
现在,这个服务器将依次处理每个请求,这意味着其将不会在前一个连接完成处理前,处理后一连接。若服务器收到了越来越多的请求,这种顺序执行就会越来越差。而若该服务器收到了一个要耗费较长时间处理的请求,即使后续的新请求可被快速处理,但其仍将不得不等待直到那个长时间请求完成。咱们需要修复这个问题,但首选,咱们将具体看看这个问题。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user