第一章:Rust入门——从零开始,打好基础
大家好,我是你们的老朋友。今天咱们正式开启Rust全栈成长课的第一章。
说实话,每次带新人入门Rust,我都有点小激动。因为这门语言,真的能改变你对编程的认知。我自己从C++转过来的时候,第一反应是:「这玩意儿怎么这么安全?」 后来用久了才发现,安全只是它的表面,背后是一整套严谨的设计哲学。
1.1 Rust发展史:一个「被迫」诞生的语言
Rust的故事,得从2006年说起。那时候Mozilla的一位工程师Graydon Hoare,在电梯里等得无聊,开始琢磨一个问题:「为什么系统编程非得跟内存泄漏、空指针这些破事儿死磕?」
于是,他利用业余时间搞了个个人项目——Rust。名字来源于一种特别顽强的真菌(锈菌),寓意着「像锈一样,虽然慢但坚不可摧」。2010年Mozilla正式赞助这个项目,2015年发布了第一个稳定版1.0。
我个人觉得,Rust能火起来,核心原因是它解决了C/C++几十年的痛点:内存安全。你想想看,多少安全漏洞都是因为缓冲区溢出、悬垂指针导致的?Rust从语言层面直接把这些坑填平了。
关键时间节点:
- 2006年:Graydon Hoare开始个人项目
- 2010年:Mozilla正式赞助
- 2015年:Rust 1.0稳定版发布
- 2021年:Rust基金会成立(AWS、Google、微软等加入)
- 2023年:Linux内核开始支持Rust
1.2 Rust核心优势:凭什么选它?
很多新手问我:「老师,Rust到底好在哪?」我一般会反问:「你写C++的时候,被Segmentation fault折磨过吗?」
嗯,答案不言而喻。Rust的三大核心优势,说白了就是:
1.2.1 内存安全——没有GC的「自动」管理
Rust通过所有权系统(Ownership)和借用检查器(Borrow Checker),在编译阶段就杜绝了内存错误。不需要垃圾回收器(GC),也没有运行时开销。我在项目中遇到过好几次,明明代码逻辑没问题,但就是莫名其妙崩溃。后来用Rust重写后,同样的逻辑一次通过——那种感觉,就像从泥潭里爬出来洗了个热水澡。
1.2.2 无GC——性能与C语言肩并肩
没有GC意味着什么?意味着你不需要担心「Stop The World」的暂停。Rust的零成本抽象(Zero-cost Abstraction)让你写高级代码,却得到底层性能。说白了,你写的是Rust,跑起来跟C一样快。
1.2.3 并发安全——数据竞争?不存在的
Rust的Send和Sync trait,让并发编程变得异常安全。编译器会在你编译时检查数据竞争。我曾经在Go里写过死锁,排查了两天才找到原因。换成Rust后,同样的并发逻辑,编译器直接告诉我「这里不能这么写」——省了多少调试时间啊!
小提示:Rust的并发模型不是「防止你犯错」,而是「让你根本没法犯那个错」。这是两种完全不同的设计哲学。
1.3 安装Rust工具链:三步搞定
安装Rust其实很简单。我个人习惯用rustup,因为它能管理多个Rust版本,还能随时切换。
1.3.1 安装rustup
打开终端,输入以下命令(Linux/macOS):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Windows用户去官网下载rustup-init.exe就行。安装过程中选默认选项,一路回车。
1.3.2 验证安装
安装完成后,检查三个核心工具:
rustc --version # 编译器版本
cargo --version # 包管理工具
rustup --version # 版本管理工具
如果都正常显示版本号,恭喜你,环境搭好了。
注意:安装后记得重启终端,或者执行source ~/.cargo/env让环境变量生效。我曾经忘了这一步,折腾了半小时才发现是路径没加载。
1.4 第一个Rust程序:Hello, World!
每个程序员都绕不开的仪式感。咱们用最传统的方式开始:
// main.rs
fn main() {
println!("Hello, World!");
}
编译运行:
rustc main.rs
./main
# 输出:Hello, World!
嗯,就这么简单。但别小看这几行代码,它背后包含了Rust的核心结构:
fn关键字声明函数main是程序入口println!是宏(注意那个感叹号)- 语句末尾必须加分号
避坑指南:我曾经见过新手把println!写成println(少了感叹号),结果编译器报错说找不到这个函数。记住:带感叹号的是宏,不带的是普通函数。
1.5 使用Cargo创建项目:这才是Rust的正确打开方式
说实话,直接用rustc编译小项目还行,但真实项目里没人这么干。Cargo才是Rust的标配。
1.5.1 创建新项目
cargo new hello_cargo
cd hello_cargo
这个命令会生成以下结构:
hello_cargo/
├── Cargo.toml # 项目配置文件
└── src/
└── main.rs # 源代码
1.5.2 编译和运行
cargo build # 编译(生成debug版本)
cargo run # 编译+运行
cargo check # 只检查语法,不生成可执行文件(速度更快)
我个人习惯开发时用cargo check,因为快。等确认没问题了再用cargo run。你想想看,每次改一行代码就编译一次,大型项目等得你怀疑人生。
1.5.3 Cargo.toml 长什么样?
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"
[dependencies]
这里edition = "2021"是Rust的版本号。Rust每三年出一个新edition,2021版是目前最常用的。
小技巧:添加依赖直接在[dependencies]下面写就行,比如serde = "1.0"。Cargo会自动从crates.io下载。
知识体系总览
下面这张图,是我自己整理的本章知识脉络。你看一眼就能明白Rust入门阶段要掌握什么:
这张图把本章五个核心知识点串起来了。从发展史到工具链,再到第一个程序,最后用Cargo管理项目——这就是Rust入门的完整路径。
本章小结
咱们这一章,从Rust的诞生聊到了实际安装使用。你学会了:
- Rust为什么诞生,以及它解决了什么问题
- 三大核心优势:内存安全、无GC、并发安全
- 用rustup安装工具链
- 写了第一个Hello World程序
- 用Cargo创建和管理项目
说实话,这些内容看起来简单,但都是后续所有章节的基石。我建议你亲手敲一遍代码,别光看。Rust的编译器特别「话痨」,你写错了它会告诉你哪里不对——这反而是最好的学习方式。
课后练习:
- 用Cargo创建一个新项目,修改
main.rs输出你的名字 - 试试
cargo check和cargo build的区别 - 在
Cargo.toml里添加一个依赖(比如rand = "0.8"),然后运行cargo build看看效果
好了,第一章就到这里。记住:Rust的学习曲线确实陡,但爬上去之后,你会发现山顶的风景值得所有汗水。
公众号:蓝海资料掘金营,微信deep3321