Rust中结构体式枚举值的if let语法用法咨询
Rust结构体风格枚举变体的匹配语法
你的Event::Key是带命名字段的结构体风格枚举变体,因此在if let匹配时需要使用结构体模式来解构获取内部数据,以下是几种可行的填充方式:
完整解构所有字段:
直接列出所有字段名,解构后可在代码块内直接使用这些变量:fn main() { let event = Event::Key { key: 42, physical_key: None, pressed: true, }; if let Event::Key { key, physical_key, pressed } = event { // 示例:打印字段值 println!("Key code: {}, pressed: {}, physical key: {:?}", key, pressed, physical_key); } }只解构需要的字段,忽略剩余字段:
如果不需要所有字段,用..表示忽略其他未列出的字段,减少冗余:fn main() { let event = Event::Key { key: 42, physical_key: None, pressed: true, }; if let Event::Key { key, pressed, .. } = event { println!("Key code: {}, pressed: {}", key, pressed); } }给解构后的字段重命名:
若变量名冲突或需要更清晰的命名,可使用原字段名: 新变量名的形式重命名:fn main() { let event = Event::Key { key: 42, physical_key: None, pressed: true, }; if let Event::Key { key: code, pressed: is_pressed, .. } = event { println!("Key code: {}, pressed status: {}", code, is_pressed); } }
内容的提问来源于stack exchange,提问作者pm100
相关产品推荐
相关产品推荐

