Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rust中into_组_映射的自定义映射_Rust - Fatal编程技术网

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
依赖项。