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
相关产品推荐
相关产品推荐

