1. Rust入门:发展史、核心优势与环境搭建
大家好,我是你们这门课的主讲。今天咱们聊聊Rust的入门话题。
说实话,我第一次接触Rust是在2016年。那时候它还没到1.0版本,社区也不大。但我试用之后,心里就一个感觉:这语言,有戏。
1.1 Rust发展史:从Mozilla实验室到全球流行
Rust的故事,得从2006年说起。
当时Mozilla的一位工程师Graydon Hoare,觉得C++在大型项目里太容易出内存问题了。他想要一门语言,既能像C++一样控制底层,又能保证内存安全。于是,Rust作为个人项目诞生了。
2009年,Mozilla正式赞助了这个项目。2015年,Rust 1.0发布。这是个大日子——意味着语言稳定了,可以用于生产环境了。
我记得2018年,Rust社区发起了一个口号:「Rust: 一门让每个人都能构建可靠、高效软件的语言」。嗯,这个定位很准。
到了2023年,Rust已经连续多年在Stack Overflow开发者调查中被评为「最受喜爱的语言」。Linux内核、Android、Firefox、亚马逊、微软……都在用Rust重写关键组件。
关键时间节点:
- 2006年:Graydon Hoare开始个人项目
- 2009年:Mozilla正式赞助
- 2015年:Rust 1.0 稳定版发布
- 2018年:Rust 2018 Edition 发布,引入模块系统改进
- 2021年:Rust 2021 Edition 发布,进一步优化
- 2023年:Rust进入Linux内核主线
1.2 Rust核心优势:为什么选它?
你可能会问:市面上语言那么多,为什么偏偏学Rust?
我总结三个核心优势,你品品。
1.2.1 内存安全,无需垃圾回收
这是Rust最大的卖点。C/C++里,你手动管理内存,一个不小心就野指针、内存泄漏。Java、Go用垃圾回收器帮你管,但性能有损耗,而且不可预测。
Rust走了一条新路:所有权系统。编译器在编译时就检查内存使用,保证没有空悬指针、没有数据竞争。说白了,就是「编译通过,内存安全」。
我在项目中遇到过好几次,用C++写的模块跑着跑着就崩了,查半天是某个指针被提前释放了。换成Rust后,同样的逻辑,编译过了就再没出过这类问题。
1.2.2 零成本抽象
Rust的很多高级特性——比如迭代器、闭包、泛型——在编译后会被优化成和手写底层代码一样的机器码。你写高级代码,但性能不输C。
举个例子,你用迭代器链式操作处理数组,Rust编译器会把它展开成循环,甚至向量化。你想想看,这多爽。
1.2.3 无畏并发
并发编程是出了名的难。数据竞争、死锁、活锁……Rust的所有权系统同样能帮你避免数据竞争。编译器会在编译时检查:两个线程不能同时写同一个数据,除非你用了同步原语。
我建议所有做后端服务、系统编程的朋友,都试试Rust的并发模型。你会发现自己少了很多半夜排查bug的痛苦。
| 特性 | Rust | C/C++ | Java/Go |
|---|---|---|---|
| 内存安全 | 编译时保证 | 手动管理 | GC自动管理 |
| 性能 | 接近C | 顶级 | 有GC开销 |
| 并发安全 | 编译时检查 | 全靠开发者 | 靠锁/同步 |
| 学习曲线 | 较陡 | 中等 | 平缓 |
1.3 开发环境搭建:rustup 和 cargo
好,理论说完了,咱们动手。搭建Rust环境其实很简单,核心就两个工具:rustup 和 cargo。
1.3.1 安装 rustup
rustup 是Rust的版本管理器和安装器。它帮你管理不同版本的Rust编译器,还能轻松切换。
打开终端,执行:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
然后按提示操作。默认安装 stable 版本,我建议你就用默认。
安装完成后,重启终端或执行:
source $HOME/.cargo/env
验证一下:
rustc --version
# 输出类似:rustc 1.75.0 (8e29a27d4 2023-12-20)
小提示:Windows用户可以去官网下载安装包,或者用Windows Subsystem for Linux (WSL)。我个人习惯用WSL,体验和Linux一致。
1.3.2 认识 cargo
cargo 是Rust的包管理器和构建工具。它类似于Node.js的npm、Python的pip。但cargo更强大——它同时负责构建、测试、文档生成、发布。
创建一个新项目:
cargo new hello_rust
cd hello_rust
看看目录结构:
hello_rust/
├── Cargo.toml # 项目配置文件
└── src/
└── main.rs # 源代码
编译并运行:
cargo run
你会看到输出:
Compiling hello_rust v0.1.0 (/path/to/hello_rust)
Finished dev [unoptimized + debuginfo] target(s) in 0.34s
Running `target/debug/hello_rust`
Hello, world!
嗯,就是这么简单。
1.3.3 常用 cargo 命令
cargo new— 创建新项目cargo build— 编译项目cargo run— 编译并运行cargo test— 运行测试cargo check— 检查代码能否编译(不生成可执行文件,速度更快)cargo add— 添加依赖(需要cargo-edit插件)
避坑指南:我曾经在项目里直接用了 cargo build --release 来测试,结果发现编译时间特别长。后来才意识到,release模式会做大量优化,适合最终发布。平时开发用 cargo build 或 cargo check 就够了,快很多。
1.4 知识体系总览
下面这张图,帮你把本章的核心内容串起来。你可以看到Rust从历史到优势,再到环境搭建的完整脉络。
1.5 写在最后
好了,这一章的内容就到这里。你了解了Rust从哪里来、为什么好、怎么装。接下来,你就可以开始写真正的Rust代码了。
记住,环境搭建只是第一步。真正有意思的,是后面用Rust解决实际问题。咱们下一章见。