Skip to content

🦀 Rust

AI 摘要:Rust 是由 Mozilla 研究院于 2010 年推出的系统级编程语言,专注于内存安全、并发性和性能。通过所有权(Ownership)系统在编译期保证内存安全,无需垃圾回收器,适合系统编程、WebAssembly、嵌入式开发等场景。

概述

Rust 属于 系统 & 高性能语言 分类。Rust 连续多年被评为"最受喜爱的编程语言",以其零成本抽象和内存安全保证而闻名。

语言特点

Rust 作为一种现代系统编程语言,具有以下核心特点:

  • 内存安全:通过所有权(Ownership)、借用(Borrowing)和生命周期(Lifetime)系统,在编译期消除内存错误
  • 零成本抽象:高级语言特性不会带来运行时开销,"你不需要为你没有使用的东西付费"
  • 无数据竞争的并发:类型系统和所有权规则保证线程安全,编译期拒绝数据竞争
  • 无 GC:没有垃圾回收器,内存管理可预测,适合实时和嵌入式场景
  • 强大的类型系统:代数数据类型(ADT)、模式匹配、Trait 系统
  • 优秀的工具链:Cargo 包管理器、rustfmt 格式化、clippy 代码检查

Hello World

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

基础语法

变量与数据类型

Rust 是静态类型语言,支持类型推断:

rust
let age: i32 = 25;
let name = "Rust";  // 类型推断为 &str
let price = 99.99;  // 类型推断为 f64
let is_active = true;
let mut count = 0;  // mut 关键字声明可变变量

// 常量
const MAX_SIZE: usize = 100;

所有权系统

Rust 最核心的特性,三条基本规则:

  1. 每个值都有一个所有者(owner)
  2. 同一时刻只能有一个所有者
  3. 当所有者离开作用域,值被丢弃(drop)
rust
let s1 = String::from("hello");
let s2 = s1;  // 所有权转移,s1 不再有效
// println!("{}", s1);  // 编译错误!
println!("{}", s2);  // 正常工作

// 借用(引用)
fn calculate_length(s: &String) -> usize {  // 借用,不获取所有权
    s.len()
}

控制流

rust
// if-else (是表达式)
let result = if age >= 18 {
    "成年人"
} else {
    "未成年人"
};

// for 循环
for i in 0..10 {
    println!("{}", i);
}

// loop (无限循环)
let mut counter = 0;
let result = loop {
    counter += 1;
    if counter == 10 {
        break counter * 2;  // 返回值
    }
};

// while 循环
while counter > 0 {
    counter -= 1;
}

// match 模式匹配
match value {
    1 => println!("一"),
    2..=5 => println!("二到五"),
    _ => println!("其他"),
}

函数与闭包

rust
// 函数定义
fn add(a: i32, b: i32) -> i32 {
    a + b  // 最后一行为返回值
}

// 多返回值(元组)
fn swap(a: i32, b: i32) -> (i32, i32) {
    (b, a)
}

// 闭包
let sum = |x, y| x + y;
let greet = |name: &str| format!("Hello, {}!", name);

枚举与模式匹配

rust
enum Result<T, E> {
    Ok(T),
    Err(E),
}

// Option 处理空值
fn find_user(id: i32) -> Option<String> {
    if id > 0 {
        Some(format!("User {}", id))
    } else {
        None
    }
}

// 使用 match 处理
match find_user(1) {
    Some(name) => println!("Found: {}", name),
    None => println!("Not found"),
}

// 使用 if let 简化
if let Some(name) = find_user(1) {
    println!("Found: {}", name);
}

应用领域

  • 系统编程:操作系统组件和驱动开发
  • WebAssembly:高性能浏览器应用
  • 网络服务:Tokio 异步 Web 服务
  • 嵌入式开发:嵌入式和 IoT 设备
  • 区块链:Solana、Polkadot 等区块链项目
  • 命令行工具:ripgrep、fd、bat 等高性能 CLI 工具
  • 游戏引擎:Bevy 游戏引擎

开发环境搭建

  1. 安装 Rust:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  2. 验证安装:rustc --versioncargo --version
  3. 创建项目:cargo new my_project
  4. 构建运行:cargo run
  5. 选择 IDE:VS Code + rust-analyzer(推荐)、RustRover

学习路线

  1. 入门阶段:所有权系统 → 借用检查 → 生命周期 → 结构体和枚举
  2. 进阶阶段:Trait 系统 → 错误处理(Result/Option)→ 智能指针 → 泛型
  3. 实战阶段:异步编程(async/await)→ Web 服务(Axum/Actix)→ 系统编程
  4. 高级阶段:Unsafe Rust → 宏系统 → 嵌入式开发 → 编译器插件

参考资源


返回首页 | 查看所有语言

编程语言技术文档