MST

星途 面试题库

面试题:Rust包含数据的enum结构在模式匹配中的复杂应用

定义一个Rust的enum,其中一个变体是结构体,该结构体包含一个`Vec<i32>`和一个`HashMap<String, i32>`。编写一段代码,使用模式匹配来对这个enum进行处理,当匹配到该结构体变体时,计算`Vec<i32>`中所有元素的和,并且打印出`HashMap<String, i32>`中所有键值对。
45.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::collections::HashMap;

enum MyEnum {
    StructVariant {
        vec_data: Vec<i32>,
        map_data: HashMap<String, i32>,
    },
    // 可以添加其他变体
    OtherVariant,
}

fn main() {
    let my_enum = MyEnum::StructVariant {
        vec_data: vec![1, 2, 3, 4, 5],
        map_data: {
            let mut map = HashMap::new();
            map.insert("key1".to_string(), 10);
            map.insert("key2".to_string(), 20);
            map
        },
    };

    match my_enum {
        MyEnum::StructVariant {
            vec_data,
            map_data,
        } => {
            let sum = vec_data.iter().sum::<i32>();
            println!("Vec<i32>元素的和: {}", sum);
            for (key, value) in map_data {
                println!("HashMap键值对: {} -> {}", key, value);
            }
        }
        MyEnum::OtherVariant => {
            println!("匹配到其他变体");
        }
    }
}