第 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 --install

Linux 按发行版的说明准备 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

每一行的意思是:

  1. 创建名为 hello-rust 的新项目目录,并采用 2024 edition。
  2. 通过 cd 进入这个目录。
  3. 构建并运行这个项目。

如果第一条提示同名目录已存在,可以进入之前创建的练习项目,也可以换一个项目名称。不要把其他项目的目录当成空目录覆盖。

运行成功后,终端会显示一些构建信息,程序本身输出:

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.rs

Cargo.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 查看与管理讨论 ↗

文章讨论