update ch00-00 use GPTs

This commit is contained in:
KaiserY 2024-02-29 17:41:27 +08:00
parent a2a489a0c3
commit a6f059a7d2

View File

@ -42,9 +42,9 @@ Rust 适合那些希望构建 Rust 编程语言、社区、开发工具和库的
### 重视速度和稳定性的开发者 ### 重视速度和稳定性的开发者
Rust 适合追求编程语言的速度与稳定性的开发者。对于速度来说,既是指 Rust 可以运行的多快,也是指编写 Rust 程序的速度。Rust 编译器会检查代码确保增加功能、重构代码时的稳定性。与之相比其他的一些语言没有检查功能导致开发者往往不敢修改脆弱的祖传代码。Rust 力求将高级语言特性编译成底层代码并且与手写的代码运行速度同样快这一概念称为零开销抽象zero-cost abstractions可以让代码又安全又快速。 Rust 适合那些渴望在编程语言中寻求速度与稳定性的开发者。对于速度来说,既是指 Rust 可以运行的多快,也是指编写 Rust 程序的速度。Rust 编译器的检查确保了增加功能和重构代码时的稳定性这与那些缺乏这些检查的语言中脆弱的祖传代码形成了鲜明对比开发者往往不敢去修改这些代码。通过追求零成本抽象zero-cost abstractions—— 将高级语言特性编译成底层代码并且与手写的代码运行速度同样快。Rust 努力确保代码又安全又快速。
这里提到的只是较大的几个受益群体Rust 语言也希望能支持更多其他用户。总Rust 最重要的目标是消除数十年来程序员习以为常的取舍,让安全和高效、速度和易读易用**可以兼得**。试试看 Rust说不定它的选择就适合你。 这里提到的只是几个较大的受益群体Rust 语言也希望能支持更多其他用户。总的来说Rust 最重要的目标是消除数十年来程序员习以为常的取舍,让安全和高效、速度和易读易用**可以兼得**。试试看 Rust说不定它的选择就适合你。
## 本书适合哪些人 ## 本书适合哪些人
@ -52,33 +52,35 @@ Rust 适合追求编程语言的速度与稳定性的开发者。对于速度来
## 如何阅读本书 ## 如何阅读本书
本书大体上假设您按从头到尾的顺序阅读。后面的章节建立于前面章节的基础上。前面的章节可能不会深入介绍部分主题,而是留待后续章节重新讨论。 本书大体上假设您按从头到尾的顺序阅读。后面的章节建立在前面章节概念的基础上。前面的章节可能不会深入介绍部分主题,而是留待后续章节重新讨论。
本书分为两类章节:概念章节和项目章节。在概念章节中,我们学习 Rust 的某个方面。在项目章节中,我们应用目前所学的知识一同构建小型程序。第 2、1220 章是项目章节;其余都是概念章节。 本书分为两类章节:概念章节和项目章节。在概念章节中,我们学习 Rust 的某个方面。在项目章节中,我们应用目前所学的知识一同构建小型程序。第 2、1220 章是项目章节;其余都是概念章节。
第 1 章介绍如何安装 Rust如何编写 “Hello, world!” 程序,以及如何使用 Rust 的包管理器和构建工具 Cargo。第 2 章是一个编写 Rust 语言的实战介绍,我们会构建一个猜猜看游戏。我们会站在较高的层次介绍一些概念,而将详细的介绍放在稍后的章节中。如果你希望立刻就动手实践一下,第 2 章正好适合你。第 3 章介绍 Rust 中类似其他编程语言的特性,你可以选择跳过,直接阅读第 4 章学习 Rust 的所有权ownership系统。不过如果你注重细节可以跳过第 2 章直接看第 3 章,之后想要写项目的时候再回来看第 2 章。 第 1 章介绍如何安装 Rust如何编写一个 “Hello, world!” 程序,以及如何使用 Rust 的包管理器和构建工具 Cargo。第 2 章是一个编写 Rust 语言的实战介绍,我们会构建一个猜数字游戏。我们会站在较高的层次介绍一些概念,而后续章节将提供更多细节。如果你希望立刻就动手实践一下,第 2 章是开始的好地方。第 3 章介绍 Rust 中类似其他编程语言的特性,第 4 章会学习 Rust 的所有权系统。如果你是一个特别细致的学习者,喜欢在进入下一环节之前学习每一个细节,你可能会想要跳过第 2 章,直接阅读第 3 章,等到你想要通过项目应用所学到的细节时再回到第 2 章。
第 5 章讨论结构体struct和方法第 6 章介绍枚举enum、`match` 表达式和 `if let` 控制流结构。在 Rust 中,创建自定义类型需要用到结构体和枚举。 第 5 章讨论结构体struct和方法第 6 章介绍枚举enum、`match` 表达式和 `if let` 控制流结构。在 Rust 中,创建自定义类型需要用到结构体和枚举。
第 7 章介绍 Rust 的模块module系统其中的私有性规则用来组织代码和公开的 API应用程序接口。第 8 章讨论标准库提供的常见集合数据结构,例如 Vector向量、字符串和 Hash Map散列表。第 9 章探索 Rust 的错误处理技术和理念 第 7 章介绍 Rust 的模块module系统其中的私有性规则用来组织代码和公开的 API应用程序接口。第 8 章讨论标准库提供的常见集合数据结构,例如 Vector向量、字符串和 Hash Map散列表。第 9 章探索 Rust 的错误处理的理念与技术。
第 10 章深入介绍泛型generic、Trait 和生命周期lifetime用这些特性可以写出适用多种类型的代码。第 11 章介绍测试,因为就算 Rust 有安全保证,也需要测试确保程序逻辑正确。`grep` 命令可以查找文件中的文本,第 12 章中我们将会构建一个命令行工具实现它的部分功能,为此会用到之前章节讨论的很多概念。 第 10 章深入介绍泛型generic、Trait 和生命周期lifetime这些功能让你能够定义适用于多种类型的代码。第 11 章全面讲述了测试,,因为就算 Rust 有安全保证,也需要测试确保程序逻辑正确。第 12 章中将会构建我们自己的 `grep` 命令行工具的功能子集实现,用于在文件中搜索文本。为此会用到之前章节讨论的很多概念。
第 13 章探索闭包closure和迭代器iterator这两个特性来自函数式编程语言。第 14 章会深入探讨 Cargo 并介绍分享代码库的最佳实践。第 15 章讨论标准库提供的智能指针以及相关的 Trait。 第 13 章探索闭包closure和迭代器iterator这两个 Rust 特性来自函数式编程语言。第 14 章会深入探讨 Cargo 并介绍分享代码库的最佳实践。第 15 章讨论标准库提供的智能指针以及相关的 Trait。
第 16 章介绍几类并发编程模型,并讨论 Rust 如何助你无畏地编写多线程程序。第 17 章着眼于比较 Rust 风格与 OOP面向对象编程原则。 第 16 章将引导我们了解不同的并发编程模型,并探讨 Rust 如何帮助你无畏地进行多线程编程。第 17 章着眼于比较 Rust 风格与 OOP面向对象编程原则。
第 18 章介绍模式和模式匹配,它是在 Rust 程序中表达思想的有效方式。第 19 章是一个高级主题大杂烩,包括不安全 Rustunsafe Rust、宏macro和更多关于生命周期、Trait、类型、函数和闭包的内容。 第 18 章介绍模式和模式匹配,它是在 Rust 程序中表达思想的有效方式。第 19 章是一个高级主题大杂烩,包括不安全 Rustunsafe Rust、宏macro和更多关于生命周期、Trait、类型、函数和闭包的内容。
第 20 章我们将会完成一个项目,实现一个底层的、多线程的网络服务器! 第 20 章我们将会完成一个项目,实现一个底层的、多线程的 Web 服务器!
最后的附录包含一些实用信息,格式类似参考文档。附录 A 介绍 Rust 的关键字,附录 B 介绍 Rust 的运算符和符号,附录 C 介绍标准库提供的可派生 Trait附录 D 涉及一些有用的开发工具,附录 E 介绍 Rust 的不同版本。 最后的附录包含一些语言相关的实用信息,格式类似参考文档。
本书没有错误的阅读方式,可以尽管跳过部分内容,遇到困惑时再回看前面的章节。 最后的附录包含了一些关于该语言的实用信息,其格式更像是参考资料。附录 A 涵盖了 Rust 的关键字,附录 B 涵盖了 Rust 的运算符和符号,附录 C 涵盖了标准库提供的可派生 Trait附录 D 涵盖了一些有用的开发工具,而附录 E 解释了 Rust 版本。在附录 F 中,你可以找到本书的翻译版本,而在附录 G 中,我们将讨论 Rust 是如何制作的以及什么是 nightly Rust。
阅读本书没有错误的方式:如果你想跳过前面的内容,尽管跳过!如果你遇到任何困惑,可能需要回到前面的章节。请采取对你最有效的方式。
<span id="ferris"></span> <span id="ferris"></span>
学习 Rust 的一个重点在于了解如何阅读编译器提供的错误信息它们会指导你编写出能运行的代码。为此我们会提供很多无法通过编译的示例并附上错误信息。运行示例代码的时候务必阅读上下文看看这段代码是否是故意写错的部分示例代码就是无法编译的Ferris 也会帮助你分辨哪些代码是故意写错的 学习 Rust 的一个重要部分是学会如何阅读编译器显示的错误信息它们会指引你编写出能运行的代码。为此我们将提供许多不能编译的示例以及在每种情况下编译器将显示的错误信息。请知悉如果你输入并运行一个随机示例它可能无法编译确保你阅读了示例周围的文本以判断你尝试运行的示例是否意在出错。Ferris 也将帮助你区分那些不是意在工作的代码
| Ferris | 含义 | | Ferris | 含义 |
|---------------------------------------------------------------------------------------------------------|--------------------------------| |---------------------------------------------------------------------------------------------------------|--------------------------------|