简介
欢迎来到你好,世界。本实验是《Rust 程序设计语言》的一部分。你可以在 LabEx 中练习 Rust 技能。
在本实验中,你将编写你的第一个 Rust 程序,它会在屏幕上打印文本“你好,世界!”。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
欢迎来到你好,世界。本实验是《Rust 程序设计语言》的一部分。你可以在 LabEx 中练习 Rust 技能。
在本实验中,你将编写你的第一个 Rust 程序,它会在屏幕上打印文本“你好,世界!”。
既然你已经安装了 Rust,那么是时候编写你的第一个 Rust 程序了。学习一门新语言时,编写一个向屏幕打印文本“你好,世界!”的小程序是一种传统做法,所以我们在这里也会这么做!
注意:本书假定你对命令行有基本的熟悉程度。Rust 对你的编辑工具、代码存放位置没有特定要求,所以如果你更喜欢使用集成开发环境(IDE)而非命令行,那么可以随意使用你喜欢的 IDE。现在许多 IDE 都有一定程度的 Rust 支持;请查看 IDE 的文档以获取详细信息。Rust 团队一直致力于通过
rust-analyzer
实现出色的 IDE 支持。更多详细信息请参阅附录 D。
你将首先创建一个目录来存储你的 Rust 代码。代码存放在哪里对 Rust 来说并不重要,但对于本书中的练习和项目,我们建议在你的主目录中创建一个 project
目录,并将所有项目都放在那里。
打开一个终端,输入以下命令来创建一个 project
目录,以及在 project
目录中为“你好,世界!”项目创建一个目录。
对于 Linux、macOS 和 Windows 上的 PowerShell,输入以下命令:
cd ~/project
mkdir hello_world
cd hello_world
接下来,创建一个新的源文件并将其命名为 main.rs
。Rust 文件总是以 .rs
扩展名结尾。如果文件名中有多个单词,惯例是使用下划线将它们隔开。例如,使用 hello_world.rs
而不是 helloworld.rs
。
现在打开你刚刚创建的 main.rs
文件,并输入清单 1-1 中的代码。
文件名:main.rs
fn main() {
println!("Hello, world!");
}
清单 1-1:一个打印“你好,世界!”的程序
保存文件,然后回到 ~/project/hello_world
目录下的终端窗口。在 Linux 或 macOS 上,输入以下命令来编译并运行该文件:
$ rustc main.rs
$./main
你好,世界!
无论你的操作系统是什么,字符串“你好,世界!”都应该打印到终端上。如果你没有看到这个输出,请参考“故障排除”部分以获取帮助。
如果“你好,世界!”确实打印出来了,恭喜你!你正式编写了一个 Rust 程序。这使你成为了一名 Rust 程序员——欢迎加入!
让我们详细回顾一下这个“你好,世界!”程序。这是谜题的第一部分:
fn main() {
}
这几行代码定义了一个名为 main
的函数。main
函数很特殊:它总是每个可执行 Rust 程序中运行的第一段代码。在这里,第一行声明了一个名为 main
的函数,该函数没有参数且不返回任何值。如果有参数,它们会放在括号 ()
内。
函数体用 {}
括起来。Rust 要求所有函数体都用花括号括起来。将左花括号与函数声明放在同一行,并在它们之间添加一个空格,这是一种良好的风格。
注意:如果你想在所有 Rust 项目中保持标准风格,可以使用一个名为
rustfmt
的自动格式化工具,以特定风格格式化你的代码(附录 D 中会详细介绍rustfmt
)。Rust 团队已将此工具包含在标准 Rust 发行版中,就像rustc
一样,所以它应该已经安装在你的计算机上了!
main
函数体包含以下代码:
println!("你好,世界!");
这一行完成了这个小程序的所有工作:它将文本打印到屏幕上。这里有四个重要的细节需要注意。
首先,Rust 的风格是使用四个空格进行缩进,而不是制表符。
其次,println!
调用了一个 Rust 宏。如果它调用的是一个函数,那么应该写成 println
(不带 !
)。我们将在第 19 章更详细地讨论 Rust 宏。目前,你只需要知道使用 !
意味着你调用的是一个宏而不是一个普通函数,并且宏并不总是遵循与函数相同的规则。
第三,你看到了字符串“你好,世界!”。我们将这个字符串作为参数传递给 println!
,然后该字符串会被打印到屏幕上。
第四,我们在这一行的末尾加上了分号(;
),这表示这个表达式结束了,下一个表达式准备开始。大多数 Rust 代码行都以分号结尾。
你刚刚运行了一个新创建的程序,那么让我们来研究一下这个过程中的每一个步骤。
在运行 Rust 程序之前,你必须使用 Rust 编译器通过输入 rustc
命令并将源文件名传递给它来进行编译,如下所示:
rustc main.rs
如果你有 C 或 C++ 背景,你会注意到这与 gcc
或 clang
类似。成功编译后,Rust 会输出一个二进制可执行文件。
在 Linux、macOS 和 Windows 上的 PowerShell 中,你可以通过在 shell 中输入 ls
命令来查看可执行文件:
$ ls
main main.rs
从这里开始,你可以运行 main
文件,如下所示:
./main
如果你的 main.rs
是你的“你好,世界!”程序,这一行会在你的终端上打印“你好,世界!”。
如果你更熟悉动态语言,如 Ruby、Python 或 JavaScript,你可能不习惯将编译和运行程序作为分开的步骤。Rust 是一种提前编译的语言,这意味着你可以编译一个程序并将可执行文件交给其他人,即使他们没有安装 Rust,他们也可以运行它。如果你给某人一个 .rb
、.py
或 .js
文件,他们需要分别安装 Ruby、Python 或 JavaScript 实现。但在那些语言中,你只需要一个命令来编译和运行你的程序。在语言设计中,一切都是权衡取舍。
对于简单的程序,仅使用 rustc
进行编译就可以了,但随着项目的发展,你会希望管理所有选项并便于共享你的代码。接下来,我们将向你介绍 Cargo 工具,它将帮助你编写实际的 Rust 程序。
恭喜你!你已经完成了“你好,世界”实验。你可以在 LabEx 中练习更多实验来提升你的技能。