1. Rust初探:从零开始认识这门语言
说实话,我第一次接触Rust是在2018年。那时候我在做一个嵌入式项目,C++的内存管理搞得我焦头烂额。同事推荐说:「试试Rust吧,它能在编译期就把内存问题揪出来。」我当时半信半疑——真有这么神?
结果一试,就再也没回头。
Rust的起源:一个「被迫」诞生的语言
Rust的故事要从2006年说起。Mozilla的一位工程师Graydon Hoare,在自家电梯里等得无聊,突然冒出一个想法:能不能造一门语言,既有C++的性能,又能彻底解决内存安全问题?
这个想法后来得到了Mozilla的正式支持。2010年,Rust首次公开亮相。2015年,1.0稳定版发布——这才是真正意义上的「出生」。你想想看,从2006到2015,整整9年打磨,就为了一个目标:让系统编程不再那么「危险」。
核心设计哲学:
- 零成本抽象——你不需要为用不上的特性付费
- 内存安全——没有空指针、悬垂指针、数据竞争
- 并发无忧——编译期就能发现线程安全问题
- 实用主义——能解决实际问题,不搞花架子
Rust的核心优势:凭什么选它?
我经常被问到:「Rust到底比C++好在哪里?」嗯,这个问题其实挺大的。我挑三个最实在的点来说:
| 优势 | 具体表现 | 我的亲身感受 |
|---|---|---|
| 性能 | 编译为原生机器码,无GC,内存布局可控 | 我做过一个网络协议解析库,Rust版本比C++版本快12% |
| 可靠性 | 所有权系统+借用检查器,编译期消灭内存错误 | 曾经有个C++项目上线后崩溃,查了三天发现是野指针。Rust根本不允许这种事发生 |
| 生产力 | cargo包管理、完善的文档、友好的编译器提示 | Rust的编译器错误信息是我见过最友好的——它甚至会告诉你「你是不是想写成这样?」 |
一个小秘密:Rust的编译器错误信息,其实是由一群专门研究「如何让错误信息更易懂」的团队设计的。你以后遇到编译错误,别急着烦躁——仔细看提示,往往能学到新东西。
安装Rust工具链:三步搞定
安装Rust其实很简单。我个人习惯用rustup,它是Rust的官方安装器和版本管理工具。
第一步:安装rustup
打开终端,输入下面这行命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Windows用户可以去官网下载rustup-init.exe。安装过程中选默认选项就行。
第二步:验证安装
安装完成后,检查三个核心工具:
# 查看Rust编译器版本
rustc --version
# 查看包管理工具版本
cargo --version
# 查看rustup版本
rustup --version
如果都能看到版本号,恭喜你——环境搭好了。
我曾经踩过的坑:在Linux上安装时,如果提示缺少链接器,记得先装gcc或llvm。命令是:sudo apt install build-essential。别问我怎么知道的——当年我卡在这步半小时。
第三步:了解三个核心工具
| 工具 | 作用 | 常用命令 |
|---|---|---|
rustc |
Rust编译器,把.rs文件编译成可执行文件 | rustc main.rs |
cargo |
包管理+构建工具,类似Node.js的npm | cargo new、cargo build、cargo run |
rustup |
管理Rust版本和工具链 | rustup update、rustup default stable |
第一个Hello World:两种方式
好了,环境搭好了,我们来写第一个程序。我建议你两种方式都试试——先感受一下rustc的「原始感」,再用cargo体验「现代感」。
方式一:直接用rustc
创建一个文件main.rs:
fn main() {
println!("Hello, world!");
}
然后编译运行:
rustc main.rs
./main # Windows上是 main.exe
看到终端输出Hello, world!了吗?嗯,就这么简单。
方式二:用cargo(推荐)
这才是日常开发的方式:
# 创建新项目
cargo new hello_world
cd hello_world
# 编译并运行
cargo run
cargo会自动生成项目结构:
hello_world/
├── Cargo.toml # 项目配置文件
└── src/
└── main.rs # 源代码
打开src/main.rs,你会发现cargo已经帮你写好了Hello World代码。直接cargo run就能看到输出。
我的建议:以后都用cargo。它帮你管理依赖、运行测试、生成文档——说白了,cargo就是Rust生态的「瑞士军刀」。
知识体系一览
为了让你对本章内容有个整体印象,我画了张图:
这张图把本章的核心内容串起来了。你会发现,Rust的一切设计——从起源到工具链——都围绕着「类型系统」和「内存安全」这两个核心。后面的章节,我们会逐一深入。
写在最后
好了,第一章就到这里。你学会了Rust的起源、核心优势,装好了工具链,还跑了第一个程序。说实话,能走到这一步已经超过了很多人——很多人连环境都懒得装。
下一章,我们会正式进入Rust的类型系统。你会看到Rust如何用一套优雅的规则,把C++里那些头疼的问题挡在编译期。嗯,准备好你的编辑器吧。
公众号:蓝海资料掘金营,微信deep3321