1、Rust入门:从零开始认识这门语言
说实话,我第一次接触Rust是在2018年。那时候我还在用C++写一个网络服务,内存泄漏问题搞得我焦头烂额。同事推荐说「有个新语言,编译时就能帮你检查内存问题」,我当时半信半疑——直到真正上手Rust,才发现这玩意儿确实有点东西。
这一章,咱们就从头捋一捋Rust的来龙去脉。不扯虚的,全是干货。
1.1 Rust语言发展史
Rust诞生于Mozilla研究院,最初是Graydon Hoare的个人项目。2009年Mozilla开始赞助,2015年发布了第一个稳定版——1.0。为什么Mozilla要搞这个?说白了,他们需要一个比C++更安全的系统编程语言,用来写Firefox的渲染引擎。
我记得当时有个段子:Firefox的C++代码里,有将近一半的bug都是内存问题。Rust的目标就是把这些bug扼杀在编译期。
| 年份 | 里程碑 |
|---|---|
| 2006 | Graydon Hoare开始个人项目 |
| 2009 | Mozilla正式赞助 |
| 2015 | Rust 1.0稳定版发布 |
| 2018 | Rust 2018 Edition(模块系统大改) |
| 2021 | Rust 2021 Edition(闭包、泛型增强) |
| 2023 | 进入Linux内核,AWS、Google等大厂广泛采用 |
1.2 核心特性:凭什么说它安全?
Rust最让我服气的,就是它的内存安全机制。你想想看,C/C++里最常见的段错误、空指针、野指针,在Rust里几乎绝迹。怎么做到的?靠的是所有权系统。
核心三原则:
- 每个值在Rust中都有一个所有者(owner)
- 同一时刻只能有一个所有者
- 当所有者离开作用域,值会被自动释放
举个例子,你在C++里写个函数返回一个指针,调用方得小心翼翼记着释放。在Rust里,编译器直接帮你盯着——谁借了谁的东西,什么时候还,清清楚楚。
另一个让我拍大腿的特性是零成本抽象。说白了就是:你用高级语法写代码,编译出来的机器码跟手写汇编一样高效。Rust的迭代器、闭包、泛型,在编译时都会被优化掉,运行时没有任何额外开销。
💡 我在项目中遇到过:用Rust的迭代器链式操作处理百万级数据,性能跟手写for循环几乎一样。这在Python里想都不敢想。
1.3 应用场景:Rust能干啥?
Rust不是万能的,但它的适用面确实很广。我总结了三类最典型的场景:
- 系统编程:操作系统、嵌入式、驱动开发。Linux内核6.1开始支持Rust,这就是最好的背书。
- WebAssembly:Rust编译成Wasm,体积小、速度快。前端性能敏感的部分,用Rust重写效果立竿见影。
- CLI工具:像ripgrep、fd、bat这些爆款工具,都是Rust写的。启动快、内存稳、跨平台。
嗯,这里要注意:Rust不太适合快速原型开发。如果你要三天搭个Web应用,还是用Python或Go更顺手。Rust的强项是「一次写好,稳定运行十年」的场景。
1.4 开发环境搭建:从零开始
搭建环境其实很简单,别被网上那些教程吓到。我建议你按这个顺序来:
1.4.1 安装rustup
rustup是Rust的版本管理工具,类似nvm之于Node.js。打开终端,执行:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装完成后,重启终端,输入rustc --version验证。如果看到版本号,说明搞定了。
⚠️ 我曾经在Windows上踩过坑:安装时忘了勾选「添加到PATH」,结果命令行找不到rustc。如果你也遇到这问题,手动把%USERPROFILE%\.cargo\bin加到环境变量就行。
1.4.2 认识cargo
cargo是Rust的包管理器和构建工具。你想想看,写C++时最头疼的就是链接库、管理依赖,cargo把这些全包了。
常用命令一览:
| 命令 | 作用 |
|---|---|
cargo new hello |
创建新项目 |
cargo build |
编译项目 |
cargo run |
编译并运行 |
cargo check |
只检查语法,不生成二进制(比build快) |
cargo add |
添加依赖(Rust 1.62+) |
我个人习惯是:开发时频繁用cargo check,只有确认没问题了才cargo build。因为check只做语法分析,速度能快一倍。
1.4.3 VS Code插件配置
编辑器我推荐VS Code,装上这几个插件,体验直接起飞:
- rust-analyzer:代码补全、跳转、类型提示,Rust的官方LSP
- CodeLLDB:调试器,支持断点、变量查看
- Even Better TOML:高亮Cargo.toml配置文件
- crates:在Cargo.toml里显示依赖的最新版本
装好之后,打开一个Rust项目,你会看到编辑器底部出现「Rust Analyzer: 已加载」的提示。这时候写代码,体验跟TypeScript差不多——智能提示、错误红线、一键修复,全都有。
1.5 知识体系总览
下面这张图,是我自己梳理的Rust入门知识结构。你可以把它当成一张地图,学完一章就回来看看,心里有个谱。
这张图把本章内容串起来了。左边是「是什么」——发展史、特性、场景;右边是「怎么用」——环境搭建、工具链。学完这一章,你应该能回答这三个问题:Rust从哪来?它牛在哪?我怎么开始写?
💡 一个小建议:别急着看完所有理论。装好环境后,直接cargo new hello,写个println!("Hello, Rust!");跑起来。先有手感,再深入理解,效果更好。