结构体 - Rust By Example
Description: Rust by Example (RBE) is a collection of runnable examples that illustrate various Rust concepts and standard libraries.

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 结构体

同样，`struct` 可以按如下方式解构：

    fn main() {
        struct Foo {
            x: (u32, u32),
            y: u32,
        }

        // 尝试更改结构体中的值，看看会发生什么
        let foo = Foo { x: (1, 2), y: 3 };

        match foo {
            Foo { x: (1, b), y } => println!("x 的第一个元素是 1，b = {}，y = {}", b, y),

            // 你可以解构结构体并重命名变量，
            // 顺序并不重要
            Foo { y: 2, x: i } => println!("y 为 2，i = {:?}", i),

            // 你也可以忽略某些变量：
            Foo { y, .. } => println!("y = {}，我们不关心 x 的值", y),
            // 这会导致错误：模式中未提及字段 `x`
            //Foo { y } => println!("y = {}", y),
        }

        let faa = Foo { x: (1, 2), y: 3 };

        // 解构结构体不一定需要 match 块：
        let Foo { x : x0, y: y0 } = faa;
        println!("外部：x0 = {x0:?}，y0 = {y0}");

        // 解构也适用于嵌套结构体：
        struct Bar {
            foo: Foo,
        }

        let bar = Bar { foo: faa };
        let Bar { foo: Foo { x: nested_x, y: nested_y } } = bar;
        println!("嵌套：nested_x = {nested_x:?}，nested_y = {nested_y:?}");
    }

### 另请参阅：

结构体