一、Rust 入门:从零开始掌握语法特性
1.1 Rust 发展史:一门语言的诞生与成长
Rust 的故事,得从 2006 年说起。
当时 Mozilla 的工程师 Graydon Hoare 开始了一个个人项目。他想要一门语言,既能像 C++ 一样控制底层,又能避免那些让人头疼的内存问题。说白了,就是想要「C++ 的性能,但不要 C++ 的坑」。
2010 年,Mozilla 正式对外公布了 Rust。我记得那时候我还在用 C++ 写嵌入式代码,看到 Rust 的新闻时第一反应是:「又一个新语言?能活多久?」
结果呢?2015 年 Rust 1.0 稳定版发布,社区一下子就炸了。为什么?因为它的核心承诺太诱人了——内存安全,不需要垃圾回收器。
到了 2020 年,Rust 进入了 Linux 内核。2022 年,Android 也开始用 Rust 重写关键组件。嗯,这时候你再回头看,会发现 Rust 已经不是「能不能活」的问题了,而是「什么时候成为标配」的问题。
核心时间线:
- 2006 年:Graydon Hoare 启动个人项目
- 2010 年:Mozilla 正式赞助
- 2015 年:Rust 1.0 稳定版发布
- 2020 年:进入 Linux 内核
- 2023 年:Rust 成为 Linux 内核第二官方语言
1.2 Rust 核心优势:凭什么选它?
你可能会问:「市面上语言那么多,我凭什么学 Rust?」
三个词回答你:内存安全、零成本抽象、无畏并发。
1.2.1 内存安全——没有垃圾回收器的安全
C/C++ 的性能确实好,但内存泄漏、悬垂指针、缓冲区溢出……这些坑我踩过太多次了。有一次线上服务崩溃,查了两天才发现是一个野指针的问题。那感觉,真的不想再体验第二次。
Rust 怎么解决的?所有权系统。每个值只有一个所有者,离开作用域自动释放。编译器在编译时就帮你检查清楚了,运行时几乎没有额外开销。
我的经验:刚开始学所有权时确实有点绕,但一旦习惯了,你会发现自己写的代码「天然安全」。我在项目中用 Rust 重写过一个 C++ 模块,内存相关的 bug 直接降为零。
1.2.2 零成本抽象——写高级代码,拿底层性能
什么叫零成本抽象?就是你用 Rust 的迭代器、闭包、泛型这些高级特性,编译出来的机器码跟手写汇编一样高效。不会像 C++ 的虚函数那样有隐藏开销,也不会像 Python 那样有解释器开销。
举个例子:
// Rust 的迭代器链
let sum: i32 = (1..1000)
.filter(|x| x % 2 == 0)
.map(|x| x * 2)
.sum();
这段代码编译后,跟手写的 for 循环性能完全一样。编译器会帮你内联、优化,最终生成最直接的机器码。
注意:零成本抽象不代表「零学习成本」。你需要理解 Rust 的抽象机制,才能写出既优雅又高效的代码。我曾经见过有人用 Rust 写出了 Java 风格的代码,性能反而比 C 还差——那是没用好 Rust 的特性。
1.2.3 无畏并发——编译器帮你防死锁
并发编程有多难?我做过一个多线程下载器,调试死锁调了整整一周。最后发现是加锁顺序不一致导致的。
Rust 的 Send 和 Sync trait 在编译时就帮你检查了线程安全问题。如果你不小心在多个线程间共享了可变数据,编译器直接报错,根本跑不起来。
说白了,Rust 把并发问题从「运行时排查」提前到了「编译时发现」。这省下的调试时间,你想想看有多宝贵。
1.3 Rust 开发环境搭建:从零开始
好,理论说完了,咱们动手。搭建 Rust 开发环境其实很简单,三步走:
1.3.1 安装 rustup
rustup 是 Rust 的版本管理工具,类似 Node.js 的 nvm。我个人习惯用这个,因为它可以随时切换 Rust 版本。
打开终端,执行:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装完成后,重启终端,输入 rustc --version 验证:
rustc 1.77.0 (a36ssd3f2 2024-03-15)
看到版本号,说明安装成功了。
小技巧:如果你在 Windows 上,建议用 WSL2 来安装,体验更顺畅。我刚开始在 Windows 原生环境下编译 Rust,遇到过一些链接器的问题,后来切到 WSL2 就再也没出过幺蛾子。
1.3.2 安装 Cargo
cargo 是 Rust 的包管理器和构建工具。安装 rustup 时它会自动装上。验证一下:
cargo --version
cargo 1.77.0 (a36ssd3f2 2024-03-15)
用 cargo 创建一个新项目:
cargo new hello_rust
cd hello_rust
cargo run
你会看到终端输出 Hello, world!。嗯,第一个 Rust 程序跑起来了。
1.3.3 配置 VS Code
编辑器我推荐 VS Code,配合 Rust 插件体验极佳。
需要安装的插件:
- rust-analyzer:代码补全、类型提示、错误检查。这是核心插件,必装。
- CodeLLDB:调试器支持,可以打断点、查看变量。
- Even Better TOML:Cargo.toml 文件的语法高亮。
安装完成后,打开刚才创建的 hello_rust 项目,你会看到 rust-analyzer 自动分析代码,在编辑器底部显示类型信息、错误提示等。
避坑指南:我曾经遇到过 rust-analyzer 不工作的情况,原因是 VS Code 的 Rust 插件装多了,互相冲突。建议只装上面三个,其他的先别装。如果还是不行,试试 Ctrl+Shift+P 输入 rust-analyzer: Restart server 重启一下。
1.4 知识体系总览
下面这张图,帮你快速理解本章的核心脉络:
1.5 本章小结
这一章我们聊了 Rust 的来龙去脉,也动手搭好了开发环境。你可能会觉得「就这?还没开始写代码呢」。别急,基础打牢了,后面学起来才快。
我个人建议你花点时间熟悉一下 cargo 的命令,比如 cargo build、cargo check、cargo test。这些命令在后续章节会频繁用到。嗯,先把工具用顺手,后面写代码才痛快。
本章核心要点:
- Rust 诞生于 2006 年,2015 年发布 1.0,现在已是系统编程的主流选择
- 三大核心优势:内存安全(所有权系统)、零成本抽象(编译期优化)、无畏并发(Send/Sync trait)
- 开发环境三件套:rustup(版本管理)、cargo(构建工具)、VS Code + rust-analyzer(编辑器)