如何在Rust中创建HashMap文字?在Python中,我可以这样做:
hashmap = {
'element0': {
'name': 'My New Element',
'childs': {
'child0': {
'name': 'Child For Element 0',
'childs': {
...
}
}
}
},
...
}
Run Code Online (Sandbox Code Playgroud)
在Go中这样:
type Node struct {
name string
childs map[string]Node
}
hashmap := map[string]Node {
"element0": Node{
"My New Element",
map[string]Node {
'child0': Node{
"Child For Element 0",
map[string]Node {}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法来填充二维HashMap?在C++中,我可以做以下几点:
std::unordered_map<int,std::unordered_map<int,int>> 2dmap;
//...
2dmap[0][0] = 0;
2dmap[0][1] = 1;
//...
Run Code Online (Sandbox Code Playgroud)
在我的Rust项目中,我试图填写类似的地图:
let mut map: HashMap<i32, HashMap<i32, i32>> = HashMap::new();
//...fill the hash map here.
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一方法是构建每个子地图,然后将它们移动到超级地图中,如下所示:
let mut sub1: HashMap<i32, i32> = HashMap::new();
sub1.insert(0, 0);
sub1.insert(1, 1);
let mut map: HashMap<i32, HashMap<i32, i32>>::new();
map.insert(0, sub1);
Run Code Online (Sandbox Code Playgroud)
有没有更简洁的方法来做到这一点?
上面的代码是我的实际用例的简化,它使用枚举作为索引HashMap:
enum Example {
Variant1,
Variant2,
//...
}
Run Code Online (Sandbox Code Playgroud)
没有变体具有价值.我正在使用此语法进行查询HashMap:
let value = map[Example::Variant1][Example::Variant2];
Run Code Online (Sandbox Code Playgroud)