rust中into_组_映射的自定义映射
我有以下数据结构rust中into_组_映射的自定义映射,rust,Rust,我有以下数据结构 pub struct FileContent{ version: u16, fileTypes: Vec<FileVersion> } #[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)] pub enum FileVersion { Cats(String, Vec<Definition>), Dogs(Vec<Definition>)
pub struct FileContent{
version: u16,
fileTypes: Vec<FileVersion>
}
#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize)]
pub enum FileVersion {
Cats(String, Vec<Definition>),
Dogs(Vec<Definition>),
Birds(Vec<Definition>),
}
pub struct Definition {
..
}
这给了我一个HashMap,但实际上不需要双向量结构。我如何映射它以获得HashMap?是否可以选择使用
以下内容可能会创建您要查找的结构:
使用std::collections::HashMap;
使用std::iter::FromIterator;
#[派生(克隆、分区、均衡、调试)]
发布枚举文件版本{
猫(弦,Vec),
狗(Vec),,
鸟类(Vec),
}
#[派生(克隆、分区、均衡、调试)]
发布结构定义;
fn main(){
让文件类型=vec[
FileVersion::Cats(字符串::from(“A”),vec![Definition,Definition]),
FileVersion::Dogs(vec![Definition]),
FileVersion::Cats(字符串::from(“B”),vec![Definition]),
FileVersion::Birds(vec![Definition]),
];
让my_map=HashMap:::from_iter(文件类型.into_iter().filter_map(| voc |匹配voc{
猫(s,v)=>Some((s,v)),
_=>没有,
}));
}
my_map
的值应该等于{A:[Definition,Definition],“B:[Definition]}
我不认为Itertools
进入_group_map就能做到这一点。它声明“返回映射到Vec
s值的键的HashMap
”。在给定的示例中,每个元组的第一个元素用作键,第二个元素将作为值添加到该键。如前所述,我会选择Iterator中的,然后您甚至可以删除Itertools
依赖项。