Rust 入门:编译器是你最严格的朋友 书架

第 02 章 / 共 12 章

第二章 · 十分钟跑起来

先跑起来,再讲道理

学一门新语言最快的方式不是读语法书,而是让第一个程序在屏幕上打出字来。这一章我们只干一件事:装好工具、建个项目、跑起来。中间遇到的每个名词都当场讲清楚,道理留到后面慢慢讲。

装 Rust:一条命令的事

Rust 官方的安装工具叫 rustup——大白话就是「Rust 的版本管家」,负责帮你装编译器、以后升级、切换版本。在 macOS 或 Linux 上,打开终端,一行:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Windows 用户去 rustup.rs 下载 rustup-init.exe 双击运行即可。装完后终端里多出三个命令,记住它们的分工:

验证装好了:

rustc --version
# rustc 1.8x.0 (xxxx 2025-xx-xx)

建项目:让 cargo 干体力活

在别的语言里你可能手动建文件夹、写构建脚本。Rust 里这一切交给 cargo:

cargo new hello
cd hello

它生成了两样东西,看一眼:

hello/
├── Cargo.toml      # 项目的「档案卡」:名字、版本、依赖了哪些库
└── src/
    └── main.rs     # 源代码,入口在这

打开 src/main.rs,你会发现 cargo 连第一个程序都替你写好了:

fn main() {
    println!("Hello, world!");
}

逐字读一遍:fn 是 function 的缩写,声明一个函数;main 是程序的入口,程序从这里开始执行;println! 往屏幕打印一行。注意那个感叹号——它说明 println! 不是一个普通函数,而是一个(macro),大白话是「编译期帮你生成代码的模板」。现在不用深究,只要记住:看到名字后面带 ! 的,就是宏

编译和运行:一条命令还是两条?

Rust 是编译型语言:代码必须先整体翻译成机器码,产出一个可执行文件,然后才能运行——不像 Python 那样边解释边跑。这就是为什么第一章说的那些检查能在「程序跑起来之前」做掉:编译这一步,就是编译器审账的时刻。

日常开发你只需要一条:

cargo run
#    Compiling hello v0.1.0
#     Finished `dev` profile ...
#      Running `target/debug/hello`
# Hello, world!

它默默做了三件事:调用 rustc 编译、把可执行文件放到 target/debug/、运行它。想分开做也行:cargo build 只编译不运行,cargo check 更进一步——只做检查、连可执行文件都不产出。写代码改错时多敲 cargo check,它最快,是家常便饭。

还有一个值得早知道的区别:cargo build 默认产出的是调试版,带调试信息、没开优化,编译快但跑得慢。真正要发布时用 cargo build --release,编译器会花更多时间做优化,产出的程序性能完全不是一个量级。测性能时拿调试版的数据会闹笑话。

第一次体会那个「严格的朋友」

做个小实验。把 println! 故意拼错成 printl!,再 cargo run。编译器会立刻报错,而且报得很具体:哪个文件、哪一行、问题是什么。更妙的是,它会直接补一句「你是不是想写 println!?」——它经常把改法直接写出来,就差替你敲键盘了。

现在就建立这个习惯:Rust 的报错信息是要逐字读的,它不是吓唬你,是在辅导你。很多情况下照着报错改,代码就过了。这也是这门语言「入门曲线陡但有人扶」的原因——陡坡是所有权规则,扶手是报错信息。

装个顺手的搭档

最后一步,给编辑器装上 rust-analyzer——一个实时分析 Rust 代码的插件(VS Code 里搜这个名字即可)。它会在你敲代码的同时标出错误、补全方法名、显示变量类型。有了它,编译器那个严格的朋友就搬进了你的编辑器,你打错字的下一秒它就咳嗽一声。

至此,环境齐了:rustup 管版本,cargo 管项目,rustc 管翻译,rust-analyzer 管实时提醒。下一章开始,我们正式进入语言本身,从一条最小、却最能体现 Rust 气质的规则开始:变量,默认是不许变的

Rust 入门:编译器是你最严格的朋友 · 王建硕
费曼式写法 · 由多个 AI 代理撰写与互相审校