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 buildcargo check 就够了,快很多。

1.4 知识体系总览

下面这张图,帮你把本章的核心内容串起来。你可以看到Rust从历史到优势,再到环境搭建的完整脉络。

Rust入门知识体系 发展史 核心优势 环境搭建 2006年:个人项目起步 2015年:1.0稳定版发布 2023年:进入Linux内核 内存安全(无GC) 零成本抽象 无畏并发 rustup:版本管理 cargo:构建与包管理 cargo new / build / run 目标:理解Rust为什么值得学,并能搭建开发环境

1.5 写在最后

好了,这一章的内容就到这里。你了解了Rust从哪里来、为什么好、怎么装。接下来,你就可以开始写真正的Rust代码了。

记住,环境搭建只是第一步。真正有意思的,是后面用Rust解决实际问题。咱们下一章见。