如何在Rust中优雅地将多维数组转换为嵌套HashMap?
实现嵌套HashMap的简洁地道方式
可以通过迭代器链式调用,在收集外层HashMap的同时将内层数组转换为HashMap,这是Rust中最简洁地道的实现方式:
use std::collections::HashMap; fn main() { let tuples = [("outer1", [("inner1", 1), ("inner2", 2), ("inner3", 3)])]; let m: HashMap<_, HashMap<_, _>> = tuples .into_iter() .map(|(k, inner_arr)| (k, inner_arr.into_iter().collect())) .collect(); println!("{:?}", m); }
说明
- 外层通过
into_iter()遍历原始元组数组,每个元素为(外层键, 内层键值对数组) - 用
map处理每个元素:保留外层键,将内层数组通过into_iter().collect()转换为HashMap(数组迭代器产出的(K, V)元组恰好符合HashMap的收集要求) - 最后将所有处理后的键值对收集为外层
HashMap
运行后输出即为期望结果:
{"outer1": {"inner1": 1, "inner2": 2, "inner3": 3}}
内容的提问来源于stack exchange,提问作者Ian Ling
相关产品推荐
相关产品推荐

