跳到主要内容
预计阅读 15 分钟

初识Rust —— 为什么全世界的程序员都在学它

每一种编程语言都在试图解决某个时代的难题。C语言解决了”如何直接控制硬件”,Java解决了”如何跨平台运行”,Python解决了”如何快速写出能用的代码”。而Rust,解决的是一个困扰程序员半个世纪的终极矛盾:如何同时拥有C的性能和Java的安全?

📋 开篇自测:你已经知道多少?

  1. 你能说出Rust相比C/C++在内存安全方面的核心优势吗?
  2. 你知道cargo是什么,以及它在Rust生态中扮演的角色吗?
  3. 你能区分编译型语言和解释型语言在执行方式上的差异吗?

一、Rust是什么——一门”较真”的编程语言

如果把编程语言比作不同性格的朋友,那么Python是那个随和的好脾气——你怎么写它都尽力帮你跑;JavaScript是那个灵活到有点”没原则”的——它甚至觉得"1" + 1 = "11"完全合理。而Rust呢?Rust是那个极其较真的朋友——你代码里任何一丁点可能出问题的地方,它在编译阶段就会拉住你说:“等等,这里有隐患,你必须先解决。”

这种”较真”的性格让初学者有时候会觉得Rust有点”难伺候”——明明在别的语言里能跑的代码,到Rust这里就编译不过。但一旦你适应了它的脾气,你会发现:凡是能通过Rust编译的代码,几乎不会在运行时出现内存错误、数据竞争这些让人头疼的bug。

Rust最初由Graydon Hoare设计,2010年由Mozilla公开宣布,2015年发布1.0稳定版。它的设计目标可以用三个词概括:

  • 安全:没有空指针、没有悬垂引用、没有数据竞争
  • 高效:性能比肩C/C++,无需垃圾回收器
  • 并发:编译器帮你在写代码时就杜绝并发bug

自2016年起,Rust连续十年(2016-2025)在Stack Overflow开发者调查中被评为”最受喜爱的编程语言”(2023年起该奖项更名为”最受赞赏的编程语言”,2025年Rust以72%的支持率继续保持榜首)。Linux内核从6.1版本开始正式引入Rust,微软、谷歌、亚马逊等巨头也在核心项目中大量采用Rust。这不是一时的热潮,而是整个行业对”安全系统编程”的迫切需求。

Rust能做什么?

你可能会问:学了Rust我能做什么?答案是——几乎所有需要性能和可靠性的场景

  • 系统编程:操作系统、驱动程序、嵌入式设备
  • Web后端:用Actix-web、Axum等框架构建高性能API
  • 命令行工具:ripgrep、fd、bat等知名工具都是Rust写的
  • WebAssembly:在浏览器里跑接近原生速度的代码
  • 区块链与加密:Solana等区块链平台的核心就是Rust
  • 游戏开发:Bevy等游戏引擎正在崛起

🤔 想一想 你目前使用的编程语言,有没有遇到过”运行时突然崩溃但编译时没有任何提示”的情况?Rust的编译期检查机制就是为了从根源上消除这类问题。


二、搭建开发环境——让Rust在你的电脑上安家

2.1 安装Rust:一行命令搞定

Rust有一个官方的安装管理工具叫rustup,它就像是Rust世界的”管家”,帮你安装、更新和管理不同版本的Rust工具链。

打开你的终端(macOS/Linux),输入:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Windows用户可以去 https://rustup.rs 下载安装包。

安装完成后,验证一下:

rustc --version
cargo --version

如果看到版本号输出,恭喜你,Rust已经在你的电脑上安家了!

2.2 认识Rust的三大件

安装完Rust后,你的电脑上多了三个关键工具:

工具作用类比
rustcRust编译器,把源代码编译成可执行文件翻译官,把Rust语言翻译成机器语言
cargo包管理器+构建工具+项目管理器项目经理,管理依赖、编译、测试、发布的一切事务
rustupRust版本管理器管家,负责安装和切换不同版本的Rust

在日常开发中,你打交道最多的是cargo。它是Rust生态的核心枢纽,相当于Node.js的npm + webpack,Python的pip + setuptools,Java的Maven,全合成了一个工具。

2.3 配置编辑器

推荐使用VS Code搭配rust-analyzer插件。rust-analyzer提供了代码补全、类型推导提示、错误诊断等功能,是写Rust代码的最佳搭档。

安装步骤:

  1. 打开VS Code
  2. 进入扩展市场,搜索rust-analyzer
  3. 点击安装,完成!

三、第一个Rust项目——Hello, Rust!

3.1 用cargo创建项目

在终端中执行:

cargo new hello_rust
cd hello_rust

Cargo会为你自动生成一个项目骨架:

hello_rust/
├── Cargo.toml    # 项目配置文件(类似package.json)
├── src/
│   └── main.rs   # 主源代码文件

3.2 看看自动生成的代码

打开src/main.rs,你会看到:

fn main() {
    println!("Hello, world!");
}

虽然只有三行,但这里有几个值得注意的细节:

  • fn是定义函数的关键字(function的缩写)
  • main是程序的入口函数,Rust程序从这里开始执行
  • println!后面带了一个感叹号!——这不是普通函数,而是一个宏(macro)。感叹号就是宏的标志。你暂时可以把它当成一个”加强版的函数”来理解
  • 字符串用双引号包裹
  • 每条语句以分号;结尾

3.3 运行它!

cargo run

终端会输出:

   Compiling hello_rust v0.1.0 (/path/to/hello_rust)
    Finished dev [unoptimized + debuginfo] target(s) in 0.56s
     Running `target/debug/hello_rust`
Hello, world!

cargo run帮你完成了两件事:先编译(cargo build),再运行。

3.4 理解Cargo.toml

打开Cargo.toml文件:

[package]
name = "hello_rust"
version = "0.1.0"
edition = "2024"

[dependencies]
  • [package]部分定义了项目的基本信息
  • edition指定Rust的版本年份(每隔几年发布新edition,cargo new会自动选用最新的稳定版本。Rust 2024 edition已随Rust 1.85.0于2025年2月稳定发布)
  • [dependencies]部分用来声明外部依赖——就像你在package.json里添加npm包一样

当你需要使用第三方库(在Rust中叫crate),只需在[dependencies]下添加一行,比如:

[dependencies]
serde = "1.0"

然后cargo build会自动从crates.io下载并编译这个依赖。

🤔 想一想 为什么Rust选择在编译期做如此多的检查,而不是像Python那样在运行时处理?想想一个运行在自动驾驶汽车中的程序,“运行时崩溃”和”编译时报错”的代价有什么不同?


四、Rust的编译过程——从源码到机器码

4.1 编译型 vs 解释型

如果你之前用的是Python或JavaScript,你可能习惯了”写完就能跑”的体验。这些是解释型语言——解释器逐行读取你的代码并执行。

Rust是编译型语言。在你运行程序之前,编译器会把整个源码翻译成机器码(CPU能直接执行的二进制指令)。这个过程就像翻译一本书:

  • 解释型:请一个翻译坐在旁边,你读一句他翻一句。方便,但每次读都要重新翻译。
  • 编译型:先花时间把整本书翻译好,之后直接读翻译好的版本。第一次慢,但之后每次都很快。

Rust编译器不仅做翻译,还充当了”审稿人”的角色——它会在翻译过程中检查你的”原稿”有没有逻辑漏洞、语法错误、安全隐患。这就是为什么Rust的编译有时候比较慢,但编译通过后你可以对代码质量非常有信心。

4.2 debug模式 vs release模式

cargo build          # debug模式,编译快,运行慢,包含调试信息
cargo build --release  # release模式,编译慢,运行快,充分优化

开发阶段用debug模式(快速迭代),发布时用release模式(榨干性能)。两者的性能差距有时候可以达到10倍甚至更多。如果你觉得Rust程序跑得慢,先检查一下是不是忘了加--release


五、Rust社区与学习资源——你不是一个人在战斗

学习一门语言,社区和生态往往比语言本身更重要。Rust在这方面做得非常出色:

5.1 核心资源

  • The Rust Programming Language(“The Book”):官方教程,免费在线阅读,是公认最好的编程语言官方文档之一
  • Rust by Example:通过大量可运行的示例学习Rust
  • Rustlings:一系列小练习,帮你在实践中掌握Rust基础
  • crates.io:Rust的包仓库,已有超过20万个crate

5.2 常用crate推荐

领域crate说明
序列化serdeRust生态最重要的crate之一
HTTP客户端reqwest类似Python的requests
Web框架axum / actix-web高性能Web开发
异步运行时tokioRust异步编程的基石
数据库sqlx异步、编译期检查的SQL工具
命令行clap强大的CLI参数解析器
日志tracing现代化的日志和诊断框架

5.3 Rust的版本更新节奏

Rust每6周发布一个新的稳定版本。这种快速迭代意味着语言在持续进化,但不用担心——Rust有严格的向后兼容承诺,你的老代码不会因为升级编译器就跑不了。

更新Rust只需一行命令:

rustup update

⚠️ 常见误区

  1. “Rust太难了,不适合初学者”——Rust的学习曲线确实陡峭,但它的难不是语法复杂(语法其实很现代很优雅),而是它强迫你思考那些在其他语言中被隐藏的问题(内存管理、所有权等)。一旦你理解了这些概念,不仅Rust变得得心应手,你对其他语言的理解也会上一个台阶。
  2. “Rust要取代所有语言”——不是的。Rust最适合对性能和安全有高要求的场景。写个小脚本或者做数据分析,Python仍然是更好的选择。每种语言都有自己的最佳战场。
  3. “编译时间太长不能忍”——第一次编译确实需要耐心(因为要编译所有依赖),但后续的增量编译通常很快。而且Rust编译器帮你省下的调试时间远远超过等待编译的时间。

📝 掌握度自测

  1. 基础概念:Rust的三大设计目标是什么?请用自己的话解释每一个。
  2. 工具链rustccargorustup分别负责什么?日常开发中哪个用得最多?
  3. 实践操作:用cargo new创建一个新项目,修改代码让它输出你的名字,然后用cargo run运行。
  4. 编译模式:debug模式和release模式的区别是什么?什么时候该用哪个?
  5. 生态理解:Rust的第三方库叫什么?它们托管在哪个平台上?如何在项目中添加一个第三方库?

💡 自我评估

  • 答对5题:基础扎实,可以自信地进入下一章!
  • 答对3-4题:再回顾一下漏掉的知识点,然后继续前进。
  • 答对0-2题:建议重新阅读本章,并动手实践每个步骤。动手比看书重要十倍!

购买课程解锁全部内容

内存安全 + 零成本抽象:Rust 系统编程实战

¥29.90