跳到主要内容

Rust 编程教程

欢迎学习 Rust 编程语言!本教程将带你从零基础开始,逐步掌握 Rust 的核心知识和技能。

什么是 Rust?

Rust 是一门系统编程语言,由 Mozilla 研发,专注于安全性、并发性和性能。它具有以下特点:

  • 内存安全:通过所有权系统在编译时保证内存安全,无需垃圾回收
  • 零成本抽象:高级抽象不会带来运行时开销
  • 并发安全:编译器在编译时检测数据竞争
  • 高性能:性能媲美 C/C++
  • 实用性强:丰富的标准库和活跃的社区

为什么学习 Rust?

  1. 内存安全无需 GC:Rust 独特的所有权系统让它在保证内存安全的同时不牺牲性能
  2. 并发编程友好:编译器帮助你避免并发错误
  3. 行业需求增长:系统编程、WebAssembly、嵌入式开发等领域需求旺盛
  4. 优秀的开发体验:友好的编译器错误提示、强大的包管理器 Cargo
  5. 活跃的社区:丰富的第三方库(crates)和完善的学习资源

Rust 的应用场景

系统编程

  • 操作系统内核
  • 设备驱动
  • 嵌入式系统

Web 开发

  • WebAssembly 应用
  • 后端服务(使用 Actix、Rocket 等框架)
  • Web 服务器

命令行工具

  • 现代化的 CLI 工具(如 ripgrep、bat、exa)
  • 构建工具

网络服务

  • 高性能代理服务器
  • 分布式系统
  • 微服务

游戏开发

  • 游戏引擎
  • 游戏逻辑

区块链

  • 智能合约
  • 区块链客户端

Rust 核心概念

所有权(Ownership)

所有权是 Rust 最独特的特性,它让 Rust 在没有垃圾回收器的情况下保证内存安全。

fn main() {
let s1 = String::from("hello"); // s1 拥有字符串的所有权
let s2 = s1; // 所有权从 s1 转移到 s2
// println!("{}", s1); // 错误!s1 不再有效

println!("{}", s2); // 正确
}

解释

  • Rust 中每个值都有一个所有者(owner)
  • 同一时间只能有一个所有者
  • 所有者离开作用域时,值会被自动释放

借用和引用

使用引用可以访问数据而不获取所有权:

fn main() {
let s = String::from("hello");

let len = calculate_length(&s); // 借用 s

println!("字符串 '{}' 的长度是 {}", s, len);
}

fn calculate_length(s: &String) -> usize {
s.len()
} // s 是引用,离开作用域时不会释放数据

借用规则

fn main() {
let mut s = String::from("hello");

// 规则:要么有一个可变引用,要么有多个不可变引用
let r1 = &s; // 不可变引用
let r2 = &s; // 不可变引用
println!("{} {}", r1, r2);
// r1 和 r2 不再使用

let r3 = &mut s; // 可变引用(正确,因为 r1、r2 已不再使用)
r3.push_str(" world");
println!("{}", r3);
}

教程目录

基础阶段

进阶阶段

高级阶段

知识速查

  • 速查表 - Rust 常用语法和概念速查

学习建议

  1. 理解所有权:这是 Rust 最核心的概念,花时间彻底理解它
  2. 阅读编译器提示:Rust 编译器提供非常友好的错误信息
  3. 多写代码:Rust 的学习曲线较陡,实践是最好的老师
  4. 善用文档:使用 cargo doc 和官方文档
  5. 参与社区:Rust 社区非常友好,有问题可以积极提问

版本说明

本教程基于 Rust 1.75+ 编写,涵盖以下内容:

  • Rust 2021 Edition
  • 异步编程(async/await)
  • 模式匹配增强
  • const 泛型

参考资源

准备好开始学习了吗?点击下一章开始你的 Rust 编程之旅!