You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中能否对嵌套结构体进行解构?语法是否有误?

Rust嵌套结构体解构的可行性与正确写法

Rust完全支持嵌套结构体的解构,你提供的代码思路没问题,但存在一处语法小错误——解构S1的field2字段时,必须明确指定字段名,不能直接写S2 { ... }。

修正后的正确代码

struct S2 {
    field1: i64,
    field2: i64,
}

struct S1 {
    field1: String,
    field2: S2,
}

fn main() {
    let s1 = S1 {
        field1: String::from("hello"),
        field2: S2 {
            field1: -1,
            field2: 0,
        }
    };

    // 嵌套解构:指定S1的field2字段,再解构内部的S2
    let S1 {
        field1,
        field2: S2 {
            field1: field1_s2,
            .. // 用..忽略S2中不需要的field2字段
        },
    } = s1;

    println!("S1的field1: {}", field1);
    println!("S2的field1: {}", field1_s2);
}

其他可行写法

  • 若需要解构所有字段,可省略..:
let S1 {
    field1: s1_field1,
    field2: S2 {
        field1: s2_field1,
        field2: s2_field2,
    },
} = s1;
  • 也可以拆分两步解构,先拆外层再拆内层:
let S1 { field1, field2 } = s1;
let S2 { field1: field1_s2, .. } = field2;

内容的提问来源于stack exchange,提问作者user2138149

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 02:45:02