Rust 语言简介

在动手装环境之前,我们先认识一下 Rust 到底是什么、为什么值得学、能用它做什么。理解了背景,学习的时候会更有的放矢——尤其是后面会遇到"所有权"这种其他语言没有的概念,知道它要解决什么问题,理解起来会顺畅得多。

Rust 是什么?

Rust 是一门追求安全和性能兼得的系统级编程语言。它的核心承诺听起来矛盾:既要有 C/C++ 的极致性能,又要像 Java/Python 一样内存安全;既不要垃圾回收器(GC)的运行时开销,又不要程序员手动 free 内存。Rust 用一套独特的所有权(ownership)系统,在编译期实现了这一切。

诞生故事:一次电梯故障的启发

Rust 由 Mozilla 的工程师 Graydon Hoare2006 年开始私下开发,2010 年正式公布,2015 年发布 1.0 稳定版。它的诞生故事很接地气:Hoare 有一次回家,发现公寓电梯因为软件 bug 卡住了,被迫爬 21 层楼。他开始反思——为什么现代软件这么多崩溃和漏洞?

分析后他发现,大量问题的根源是 C/C++ 的内存不安全:悬垂指针(用了已释放的内存)、缓冲区溢出(读写超出数组边界)、数据竞争(多线程同时改同一块数据)。这些问题在运行时才暴露,排查极难。他决心造一门"既像 C 一样快、又像 ML 一样安全"的语言。于是 Rust 诞生了。

名字 Rust 取自一种强健的真菌(rust fungus),寓意生命力顽强。它的吉祥物是一只螃蟹,叫 Ferris,你会在所有 Rust 社区看到它。

核心设计理念

第一个 Rust 程序

先看一眼代码。Rust 的 Hello World 长这样:

fn main() {
    println!("Hello, World!");
    println!("你好, Rust!");
}
// 输出:
// Hello, World!
// 你好, Rust!

几个细节先留个印象,后面会逐一展开:fn 用来定义函数,main 是程序入口;println! 末尾的感叹号表示它是一个宏(macro),不是普通函数——宏在编译期展开;每行语句以分号结尾。装好环境后,用 cargo 创建项目就能跑起来,下一篇会详细讲。

Rust 的杀手锏:所有权

这是 Rust 最核心、也最与众不同的概念,这里先给个直观印象,后面有专门一篇深入讲。看下面这段代码:

// 所有权示例:Rust 不需要 GC 也能管理内存
fn main() {
    let s1 = String::from("hello");
    let s2 = s1;                    // 所有权转移给 s2

    // println!("{}", s1);          // 编译错误!s1 已失效
    println!("{}", s2);             // OK,输出 hello
}
// s2 离开作用域时,内存自动释放

关键洞察:String 类型在堆上分配内存,变量 s1 是它的"所有者"。当执行把 s1 赋给 s2 时,所有权转移(move)给了 s2,s1 随即失效——再用 s1 就是编译错误。这避免了"两个变量同时释放同一块内存"的双重释放问题,完全在编译期完成,运行时零开销。整数、bool 等简单的栈类型则自动复制,不受此限制。

编译期就能挡住并发 bug

下面这段代码在其他语言里会编译通过、运行时偶发出错;在 Rust 里编译都过不了:

// 这段代码在编译期就会被拒绝,根本跑不起来
fn main() {
    let mut v = vec![1, 2, 3];
    let first = &v[0];              // 不可变借用
    v.push(4);                      // 可变借用:编译错误!
    println!("{}", first);          // 编译器阻止了数据竞争
}

// 报错信息会精确告诉你:不能在存在不可变借用时
// 对数据进行可变操作。运行时永远不会出现这种 bug。

这就是"无畏并发"的含义——借用检查器强制执行"同一时刻要么多个只读共享,要么一个独占可写"的规则,数据竞争从根源上无法发生。新手会觉得它"太严格",但习惯后你会发现它像一位严格但睿智的导师。

Rust 都用在哪?典型应用场景

Rust vs 其他语言

该不该学 Rust?

如果你的方向是系统编程、底层开发、高性能服务、WebAssembly、嵌入式、区块链,Rust 几乎是必修课。即便你日常用 Python/JS,Rust 也是绝佳的"第二语言"——它教你用新的方式思考内存、并发和错误处理,学完后写其他语言的代码也会更严谨。

值得一提的是,Rust 是唯一在 Stack Overflow 开发者调查中连续 8 年(2016-2023)蝉联"最受喜爱语言"的编程语言。开发者爱它,不是没有理由的。

← 返回 Rust 教程目录

下一篇 Rust 环境安装与 Cargo

✈️💬