# Rust 基础类型与模式匹配

Rust 的类型系统很务实：标量类型够用，复合类型灵活，而 `enum` + `match` 是它表达「多种可能」的利器。

## 标量类型

```rust
let i: i32 = -10;        // 有符号整数
let u: u8 = 255;         // 无符号（0~255）
let f: f64 = 3.14;       // 浮点
let b: bool = true;      // 布尔
let c: char = 'R';       // 字符（Unicode，4 字节）
```

## 复合类型

```rust
let tup: (i32, f64, char) = (500, 6.4, 'z'); // 元组
let (a, _b, c) = tup;                         // 解构
let arr = [1, 2, 3, 4, 5];                    // 数组（定长）
let first = arr[0];
```

## 枚举 enum

枚举把「一组相关的可能值」打包：

```rust
enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
}
```

## 模式匹配 match

用 `match` 穷尽处理每种情况，编译器强制你覆盖全部分支：

```rust
fn handle(msg: Message) {
    match msg {
        Message::Quit => println!("退出"),
        Message::Move { x, y } => println!("移动到 {},{}", x, y),
        Message::Write(text) => println!("文本: {}", text),
    }
}
```

`if let` 是只关心一种情况的简写：

```rust
if let Message::Write(t) = msg {
    println!("只处理写消息: {}", t);
}
```

## 小结

- 元组/数组是轻量复合类型；要变长用 `Vec`（下章提）。
- `enum` 比别的语言更强大，可携带数据。
- `match` 穷尽匹配，少写分支编译器不答应。

➡️ [4. 结构体、方法与错误处理](rust-04-struct-error.md)

