目录

  1. 什么是 Rust
  2. 为什么要学习 Rust
  3. 安装与环境配置
  4. 基本语法与概念
  1. 所有权与借用
  2. 结构体与枚举
  3. 模块与包
  4. 错误处理
  5. 代码示例
  6. 参考资料与出站链接

什么是 Rust

Rust 是一种现代系统编程语言,强调性能、内存安全和并发性。它由 Mozilla 研究团队开发,首次发布于 2010 年。Rust 通过其独特的所有权系统在编译时防止内存错误,无需垃圾回收器。


为什么要学习 Rust

  • 内存安全:避免空指针、数据竞争等问题。
  • 高性能:接近 C/C++ 的速度,适合系统编程。
  • 并发性:内置工具支持安全多线程。
  • 生态系统:Cargo 包管理器和丰富的社区库。
  • 就业前景:广泛用于区块链、嵌入式和 WebAssembly。

安装与环境配置

  1. 安装 Rust
  • 使用 rustup,官方推荐的安装工具:
    bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Windows 用户可下载 rustup-init.exe
  1. 验证安装
   rustc --version
   cargo --version
  1. 更新 Rust
   rustup update
  1. 推荐编辑器
  • VS Code + rust-analyzer 插件。

基本语法与概念

变量与数据类型

  • 变量:默认不可变,使用 mut 声明可变变量。
  • 基本类型:整数 (i32, u8)、浮点数 (f64)、布尔 (bool)、字符 (char)。
let x = 5;         // 不可变
let mut y = 10;    // 可变
y = 15;

函数

  • 使用 fn 定义,支持多返回值。
fn add(a: i32, b: i32) -> i32 {
    a + b  // 无分号表示返回值
}

控制流

  • if-else
let number = 7;
if number > 0 {
    println!("正数");
} else {
    println!("非正数");
}
  • 循环loopwhilefor
for i in 1..4 {
    println!("{}", i);  // 打印 1, 2, 3
}

所有权与借用

  • 所有权:每个值有唯一的所有者,离开作用域时释放。
  • 借用:使用 &(不可变引用)或 &mut(可变引用)。
fn main() {
    let s = String::from("hello");
    let r = &s;  // 借用
    println!("{}", r);
}

结构体与枚举

  • 结构体 (Struct)
struct Point {
    x: i32,
    y: i32,
}

let p = Point { x: 0, y: 0 };
  • 枚举 (Enum)
enum Color {
    Red,
    Green,
    Blue,
}

let c = Color::Red;

模块与包

  • 模块:使用 mod 组织代码。
mod math {
    pub fn add(a: i32, b: i32) -> i32 {
        a + b
    }
}

fn main() {
    println!("{}", math::add(2, 3));
}
  • :通过 Cargo 管理,使用 Cargo.toml

错误处理

  • Result:处理可恢复错误。
fn divide(a: i32, b: i32) -> Result<i32, String> {
    if b == 0 {
        Err(String::from("除数不能为 0"))
    } else {
        Ok(a / b)
    }
}
  • Option:处理可能为空的值。

代码示例

“Hello, World!” 与 Cargo

  1. 创建项目:
   cargo new hello_rust
   cd hello_rust
  1. 编辑 src/main.rs
fn main() {
    println!("Hello, Rust!");
}
  1. 编译并运行:
   cargo run

计算器示例

fn main() {
    let a = 10;
    let b = 5;
    println!("{} + {} = {}", a, b, add(a, b));
}

fn add(x: i32, y: i32) -> i32 {
    x + y
}

运行结果:

10 + 5 = 15

参考资料与出站链接

  1. 官方文档
  1. 学习资源
  1. 工具与社区