第 01 篇
安装与第一个程序
认识终端、Rust 编译器和 Cargo,创建项目,运行并修改第一个 Rust 程序。
Hex4C59 7 分钟阅读 更新于 2026-10-17
编程·原创·实战教程
这一节会带你安装工具,创建一个能反复修改、检查和运行的 Rust 项目。你不需要会写代码,但要能打开终端、创建文件夹,用文本编辑器保存文件。后面两节继续用这个项目练习。
先让终端显示下面两行文字,再换成你自己想说的内容。
你好,Rust!
我正在学习编程。1.1 我们写的代码怎样变成程序 #
你写在 .rs 文件里的代码叫源代码。Rust 编译器先检查语法和类型,再把符合要求的代码编译成目标平台的程序。编译成功后,再运行程序,观察结果。
学习时要分清两类问题:代码没能通过编译,或程序能运行,结果却不符合预期。前者需要读编译器的错误提示,后者需要检查程序逻辑。后面会分别练习。
你会使用这三个工具:
| 工具 | 在学习中负责什么 |
|---|---|
rustup | 安装和管理 Rust 工具链 |
rustc | 编译 Rust 源代码 |
cargo | 创建项目,组织构建、运行和测试等操作 |
工具链就是编译和构建程序所需的一组工具。平时大多数操作交给 cargo 即可,它会调用编译器,不必每次手动运行 rustc。
1.2 先检查工具是否已经安装 #
macOS 打开“终端”,Windows 可以打开 PowerShell,Linux 打开系统终端。先分别输入:
rustc --version
cargo --version每输入一行,按一次回车。如果两条命令都能显示版本,就先跳过安装步骤。教材的配套项目使用 Rust 2024 edition,需要 Rust 1.85 或更新的工具链。edition 指语言兼容规则的版本,与编译器的发布版本是两个概念。
代码块左上角的 sh 表示终端命令,rust 表示 Rust 源代码,text 表示输出或目录示意。不要把 Rust 代码直接粘到终端里。终端自己显示的 %、$ 或 > 提示符也不用输入。
如果终端提示 command not found 或“无法识别”,再安装工具。
macOS 和 Linux #
按照 Rust 官方安装页 的说明安装 rustup。官方提供的命令是:
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh它从官方地址下载脚本并执行,需要联网。可以先在浏览器查看脚本内容,再按安装器的提示操作。安装后重新打开终端,检查前面的两条版本命令。
生成可执行程序还需要链接器,它把编译产物组合成最终程序。macOS 通常由 Xcode 或 Command Line Tools 提供;如果缺少开发工具,可以运行:
xcode-select --installLinux 按发行版的说明准备 GCC 或 Clang;Ubuntu 常用 build-essential。已经安装的工具不需要重复安装。
Windows #
从同一个官方安装页下载 Windows 安装器,按提示安装。安装过程中可能需要 Visual Studio C++ 构建工具,它提供链接器和相关库。完成后重新打开 PowerShell,检查 rustc --version 和 cargo --version。
安装后仍找不到命令,就先检查安装器给出的 PATH 提示。PATH 是终端查找程序时搜索的目录列表,暂时不必为此大幅修改系统配置。
1.3 创建项目,确认自己在哪个目录 #
终端执行命令时有一个“当前工作目录”。命令通常从这里开始寻找文件,所以运行前要确认自己在哪个目录。
在你准备存放练习的目录中,依次运行:
cargo new hello-rust --edition 2024
cd hello-rust
cargo run每一行的意思是:
- 创建名为
hello-rust的新项目目录,并采用 2024 edition。 - 通过
cd进入这个目录。 - 构建并运行这个项目。
如果第一条提示同名目录已存在,可以进入之前创建的练习项目,也可以换一个项目名称。不要把其他项目的目录当成空目录覆盖。
运行成功后,终端会显示一些构建信息,程序本身输出:
Hello, world!Compiling、Finished 和 Running 等提示来自 Cargo;Hello, world! 来自你的程序。第二次运行时,如果代码没有变化,Cargo 通常会复用已有构建结果。
如果看到 could not find Cargo.toml,说明 Cargo 没在当前目录及其父目录中找到项目清单。先检查是否执行过 cd hello-rust。macOS / Linux 用 pwd 查看当前目录,PowerShell 用 Get-Location。
1.4 认识项目里的几个文件 #
初始项目的关键文件如下:
hello-rust/
├── Cargo.toml
└── src/
└── main.rsCargo.toml 是项目清单,记录项目名称、版本、edition 和依赖。新建项目通常会有类似内容:
[package]
name = "hello-rust"
version = "0.1.0"
edition = "2024"
[dependencies]这里的 [dependencies] 是空的,尚未声明第三方依赖,也就是其他库提供的代码。这三节只使用 Rust 标准库和基本语言功能。标准库随 Rust 提供常用功能,例如前面用来打印文字的宏,不需要为它另加第三方依赖。
src/main.rs 是这个可执行程序的入口源码。用编辑器打开整个 hello-rust 文件夹,再找到它。不要把代码保存成 main.rs.txt,也不要用带字体、颜色等格式的富文本文件代替源代码。
首次构建后还会有:
Cargo.lock:记录 Cargo 为项目选定的依赖及其具体版本,通常交给 Cargo 管理。target/:存放构建产物,不是你日常编辑的源码目录。
现在主要修改 src/main.rs 即可。
1.5 修改第一个程序 #
把 src/main.rs 完整替换成:
fn main() {
println!("你好,Rust!");
println!("我正在学习编程。");
}保存文件,再在 hello-rust 目录运行:
cargo run预期输出:
你好,Rust!
我正在学习编程。如果仍然显示 Hello, world!,先检查是否保存了文件,再确认编辑器和终端指向的是同一个项目。如果运行的是另一个项目,重装工具也解决不了问题。
这段代码中,各个符号的含义如下:
| 写法 | 作用 |
|---|---|
fn | 声明一个函数 |
main | 这个可执行程序的入口函数名 |
() | 函数参数的位置,这里没有参数 |
{ ... } | 函数体,包含它要执行的代码 |
println!(...) | 打印内容,并在末尾换行 |
"你好,Rust!" | 用双引号写出的字符串文本 |
; | 结束当前这条语句 |
末尾带 ! 的 println! 是一个宏。宏可以在编译时展开成代码;目前先学会调用它,不需要自己写宏。
程序从 main 的第一条语句开始依次执行,因此两行文字按代码中的顺序打印。缩进通常使用四个空格,方便阅读;函数体的范围由花括号界定。
1.6 亲手做三个小实验 #
这几个实验只改已有代码,不需要新语法。
把第一条 println! 中的文本换成一句问候,运行后确认变化。再交换两条语句的位置,观察输出顺序。最后增加第三条 println!,打印今天的学习目标。
你还可以加入注释。下面是可以直接替换 main.rs 的完整程序:
fn main() {
// 这一行是注释,不会打印到终端。
println!("今天开始学习 Rust。");
println!("目标:独立修改并运行一个程序。");
}// 后面直到本行结束的内容是注释,用来向读代码的人解释意图,不会打印到终端。
代码语法使用英文引号、括号和分号。字符串内部可以使用中文文字和标点;字符串外的 (、; 不能代替代码中的 (、;。
1.7 让编译器指出一次错误 #
在一条打印语句中,暂时删除字符串末尾的双引号,保存并运行 cargo check。编译器应报告字符串或相关语法有误。再补回引号,重新检查。
通过这次实验,练习“改动 → 检查 → 根据位置修复”的过程。报错通常包含:
error和原因说明。- 文件路径、行号、列号。
- 用下划线或箭头标出的相关代码。
- 有时还会给出
help建议。
先修复第一条错误,再重新检查。缺失的引号可能让编译器误读后面的多行代码,不必一次处理所有后续报错。warning 是警告,通常不阻止构建,读懂原因后也应处理。
1.8 记住四个常用命令 #
以下命令在自己的 hello-rust 项目目录运行:
| 命令 | 何时使用 |
|---|---|
cargo check | 修改后先检查代码,不生成最终可执行文件 |
cargo run | 想运行程序、观察结果时 |
cargo fmt | 整理 Rust 代码格式时 |
cargo build --release | 后面需要生成 release 构建时 |
cargo build 只构建,不运行。现阶段主要按“修改、保存、cargo run”的顺序练习;代码复杂一些后,可以先用 cargo check 检查。
如果使用教材下载包,在解压后的 rust-course 目录运行这个示例:
cargo run -p rust-basics --example ch01_hello-p rust-basics 选择包,--example ch01_hello 选择示例。这是下载包的运行方式,与自己的 hello-rust 项目不同;后面默认继续在自己的项目中替换 main.rs。
1.9 练习:写一个自我介绍程序 #
独立写出三条打印语句,依次介绍一个虚构姓名、正在学习的语言和今天的目标。给其中一条语句加上注释,再运行确认输出。
参考答案:先自己完成再展开
fn main() {
println!("我叫小林。");
println!("我正在学习 Rust。");
// 把今天要完成的动作写具体。
println!("今天的目标:修改代码,保存文件,再运行一次。");
}应看到三行文字,注释内容不会出现。把三条语句换一个顺序后,输出也应该跟着改变。
1.10 进入下一节前检查 #
关掉示例,自己完成一次:打开项目,找到 src/main.rs,修改文字,保存并运行,再指出终端里哪些内容由程序打印。
还应能回答:Cargo.toml 与 main.rs 分别做什么?cargo check 和 cargo run 有什么区别?为什么命令需要在项目目录里运行?
完成这些操作后,下一节就可以给程序加入变量和计算。
官方延伸阅读与验证 #
文档查阅与示例复核日期:2026-10-13。正文完整程序在 macOS arm64、Rust 1.99.0、Cargo 1.99.0 上运行验证;本次没有在全新机器上重新执行安装流程。
一起讨论
选中正文中的文字,可以针对这段内容发起讨论。
正在读取讨论…
在 GitHub 查看与管理讨论 ↗