使用模式匹配解构 Rust 结构体

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,你将学习 Rust 中解构structs的方法,它允许你使用模式匹配从结构体中提取各个字段及其值。

注意:如果实验未指定文件名,你可以使用任何你想要的文件名。例如,你可以使用main.rs,并通过rustc main.rs &&./main进行编译和运行。

结构体

同样,一个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!("First of x is 1, b = {},  y = {} ", b, y),

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

        // 你也可以忽略一些变量:
        Foo { y,.. } => println!("y = {}, we don't care about 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!("Outside: x0 = {x0:?}, y0 = {y0}");
}

总结

恭喜你!你已经完成了结构体实验。你可以在 LabEx 中练习更多实验来提升你的技能。