一、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 的 SendSync 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 知识体系总览

下面这张图,帮你快速理解本章的核心脉络:

Rust 入门知识体系 发展史 核心优势 环境搭建 2006 个人项目 2015 1.0 稳定版 2020 进入 Linux 内核 内存安全 零成本抽象 无畏并发 rustup 安装 cargo 项目管理 VS Code 配置 目标:理解 Rust 为什么出现,掌握基础开发环境

1.5 本章小结

这一章我们聊了 Rust 的来龙去脉,也动手搭好了开发环境。你可能会觉得「就这?还没开始写代码呢」。别急,基础打牢了,后面学起来才快。

我个人建议你花点时间熟悉一下 cargo 的命令,比如 cargo buildcargo checkcargo test。这些命令在后续章节会频繁用到。嗯,先把工具用顺手,后面写代码才痛快。

本章核心要点:

  • Rust 诞生于 2006 年,2015 年发布 1.0,现在已是系统编程的主流选择
  • 三大核心优势:内存安全(所有权系统)、零成本抽象(编译期优化)、无畏并发(Send/Sync trait)
  • 开发环境三件套:rustup(版本管理)、cargo(构建工具)、VS Code + rust-analyzer(编辑器)

专注资料整理