第一章: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入门阶段要掌握什么:

Rust入门 第一章 发展史 2006-2023 核心优势 内存安全 | 无GC | 并发安全 所有权系统 | 借用检查 工具链安装 rustup | cargo | rustc 第一个程序 Hello, World! Cargo项目管理 build | run | check

这张图把本章五个核心知识点串起来了。从发展史到工具链,再到第一个程序,最后用Cargo管理项目——这就是Rust入门的完整路径。

本章小结

咱们这一章,从Rust的诞生聊到了实际安装使用。你学会了:

  • Rust为什么诞生,以及它解决了什么问题
  • 三大核心优势:内存安全、无GC、并发安全
  • 用rustup安装工具链
  • 写了第一个Hello World程序
  • 用Cargo创建和管理项目

说实话,这些内容看起来简单,但都是后续所有章节的基石。我建议你亲手敲一遍代码,别光看。Rust的编译器特别「话痨」,你写错了它会告诉你哪里不对——这反而是最好的学习方式。

课后练习:

  1. 用Cargo创建一个新项目,修改main.rs输出你的名字
  2. 试试cargo checkcargo build的区别
  3. Cargo.toml里添加一个依赖(比如rand = "0.8"),然后运行cargo build看看效果

好了,第一章就到这里。记住:Rust的学习曲线确实陡,但爬上去之后,你会发现山顶的风景值得所有汗水。


公众号:蓝海资料掘金营,微信deep3321