Update src/ch01-02-hello-world.md

This commit is contained in:
Aaran Xu 2021-11-24 02:06:31 +08:00
parent 7f2fa9b1e2
commit 4775701dca

View File

@ -1,22 +1,16 @@
## Hello, World!
现在我们已经安装好了 Rust接着我们编写第一个 Rust 程序。按照传统在学习一门新语言时都会编写一个输出“Hello, world!”(你好,世界)的程序,本章我们也是如此。
我们已经安装好了 Rust接着编写第一个 Rust 程序。按照传统在学习一门新语言时都会编写一个输出“Hello, world!”(你好,世界)的简单程序,本章我们也是如此。
> 注意本书假定你已经熟悉基本的命令行。Rust 本身对编辑器、工具或代码存放的位置都没有特殊要求。所以要是你更喜欢 IDE 而不是命令行的话,可以随意选用你喜爱的 IDE。目前很多 IDE 都提供了一定程度的 Rust 支持。有关详细信息,请查看 IDE 的文档。最近Rust 团队一直致力于提供出色的 IDE 支持,并且在这方面取得了迅速的进步!
### 创建项目目录
首先,创建一个目录来存储您的Rust代码。对于Rust驻留代码的位置来说这无关紧要但是对于本书中的练习和项目我们建议在主目录中创建一个项目目录并将所有项目保留在此目录中
首先,创建一个存放 Rust 代码的目录。Rust 不关心代码存放的位置但是对于本书中的练习和项目我们建议在操作系统的主目录home在 Windows 下即用户目录)中创建一个 *projects* 目录,并保存你的全部项目
打开终端,输入下面命令来创建 *projects* 目录,以在此目录里面创建 “Hello, world!” 项目目录。
对于Windows上的LinuxmacOS和PowerShell请输入以下命令
首先,创建一个文件来存放 Rust 代码。Rust 不关心代码存放的地方这无关紧要但对于本书中的练习和项目我们建议在操作系统的主目录home在 Windows 下即用户目录)下创建一个 *projects* 目录,并保存你的所有项目。
打开终端,输入以下命令以创建 *projects* 项目目录,以及此项目目录里面的 “Hello, world!” 项目目录。
对于 Linux、macOS 和 Windows 上的 PowerShell请输入以下命令
对于 Linux、macOS 和 Windows 的 PowerShell请输入以下命令
```console
$ mkdir ~/projects
@ -36,9 +30,9 @@ $ cd hello_world
### 编写和运行 Rust 程序
接下来,创建一个源文件并命名为 *main.rs*。Rust 文件通常以 *.rs* 扩展名结尾。如果文件名中使用了多个单词,请使用下划线将它们隔开。例如,采用 *hello_world.rs* 而不是 *helloworld.rs*
接下来,创建一个源文件并命名为 *main.rs*。Rust 文件通常以 *.rs* 扩展名结尾。如果文件名中使用了多个单词,请使用下划线将它们隔开。例如,命名为 *hello_world.rs*而不是 *helloworld.rs*
现在打开刚创建好的 *main.rs* 文件,然后键入以下代码:
现在打开刚创建好的 *main.rs* 文件,输入示例 1-1 中的代码。
<span class="filename">文件名main.rs</span>
@ -50,7 +44,7 @@ fn main() {
<span class="caption">示例 1-1一个打印 `Hello, world!` 的程序</span>
保存文件,然后返回到终端窗口。在 Linux 或 macOS 上,输入以下命令:
保存文件,回到终端窗口。在 Linux 或 macOS 上,输入以下命令,编译并运行文件
```console
$ rustc main.rs
@ -66,15 +60,13 @@ Hello, world!
Hello, world!
```
不管你使用哪种操作系统,该字符串 `Hello, world!` 都应打印到了终端上。如果看不到此输出,请参考“安装”小节的 [“疑难解答”][troubleshooting]<!-- ignore --> 部分,以获得帮助
不管你使用哪种操作系统,该字符串 `Hello, world!` 都应打印到了终端上。如果看不到此输出,请参考“安装”小节的 [“疑难解答”][troubleshooting]<!-- ignore --> 小节来查找解决方法
如果 `Hello, world!` 打印成功,那么祝贺你!你已经正式编写了一个 Rust 程序。你已经成为了一名 Rust 程序员——欢迎加入 Rust 大家庭!
### Rust 程序的详解
### Rust 程序剖析
让我们详细回顾一下 “Hello, world!” 程序发生了什么。这是难题的第一部分:
让我们详细回顾一下 “Hello, world!” 程序发生了什么。这是拼图的第一块:
```rust
fn main() {
@ -94,15 +86,15 @@ fn main() {
println!("Hello, world!");
```
该行完成了此程序中的所有工作:它将文本打印到屏幕上。这里有 4 个要注意的重要细节。
该行完成了此简单程序中的所有工作:它将文本打印到屏幕上。这里有 4 个要注意的重要细节。
首先Rust 风格的缩进使用 4 个空格,而不是制表符。
其次,`println!` 调用 Rust 宏。如果改为调用函数,则应该将其输入为 `println`(不含 `!`)。我们将在第 19 章中更详细地讨论 Rust 宏。现在只需要知道,当看到一个 `!`,则意味着调用的是宏而不是普通的函数。
第三,看到 `"Hello, world!"` 字符串。我们将这个字符串作为参数传递给 `println!`,接着 `println!` 将字符串打印到屏幕上。
第三,看到 `"Hello, world!"` 字符串。我们将这个字符串作为参数传递给 `println!`,接着 `println!` 将字符串打印到屏幕上。
第四,我们用分号(`;`结束该行这表明该表达式已结束下一个表达式已准备好开始。Rust 代码的大多数行都以一个 `;` 结尾。
第四,我们用分号(`;`,注意这是英文分号结束该行这表明该表达式已结束下一个表达式已准备好开始。Rust 代码的大多数行都以一个 `;` 结尾。
### 编译和运行是独立的步骤
@ -132,7 +124,7 @@ main.pdb
main.rs
```
这显示了带有.rs扩展名的源代码文件可执行文件在Windows上是main.exe在所有其他平台上是main以及在使用Windows时包含一个带有.pdb扩展名的调试信息的文件。在这里运行main或main.exe文件如下所示
这显示了带有 *.rs* 扩展名的源代码文件,可执行文件(在 Windows 上是 *main.exe*,在所有其他平台上是 *main*),以及在使用 Windows 时包含一个带有 *.pdb* 扩展名的调试信息的文件。在这里,运行 *main* *main.exe* 文件,如下所示:
```console
$ ./main # or .\main.exe on Windows
@ -140,7 +132,7 @@ $ ./main # or .\main.exe on Windows
如果 *main.rs* 是 “Hello, world!” 程序,这将会打印 `Hello, world!` 到终端上。
如果你只更熟悉动态语言,如 Ruby、Python 或 JavaScript你很可能不习惯分开多个步骤来编译和运行程序的方式。Rust 是一门**预编译**(*ahead-of-time compiled*)语言,这意味着你可以编译一个程序,将编译后的可执行文件给别人,即使他们没有安装 Rust 也可以运行程序。如果你为其他人提供 `.rb`、`.py` 或 `.js` 文件,那么对方也需要分别安装对应 Ruby、Python 或 JavaScript 的语言支持环境。但是在这些语言中,只需要一条命令来编译和运行程序。一切都是语言设计权衡的结果。
如果你只更熟悉动态语言,如 Ruby、Python 或 JavaScript你很可能不习惯分开多个步骤来编译和运行程序的方式。Rust 是一门**预编译**(*ahead-of-time compiled*)语言,这意味着你可以编译一个程序,将编译后的可执行文件给别人,即使他们没有安装 Rust 也可以运行程序。如果你为其他人提供 *.rb*、*.py* 或 *.js* 文件,那么对方也需要分别安装对应 Ruby、Python 或 JavaScript 的语言支持环境。但是在这些语言中,只需要一条命令来编译和运行程序。一切都是语言设计权衡的结果。
使用 `rustc` 编译对简单的程序可以轻松胜任,但随着项目的增长,你将会想要管理项目中所有相关内容,并想让其他用户和项目能够容易共享你的代码。接下来,我们将引入 Cargo 工具,这将帮助你学会编写真实开发环境的 Rust 程序。