如何在没有for循环的情况下在元组Vec中打开两个嵌套的HashMap?

保罗·拉兹万·伯格

采取以下数据类型:

let mut items = HashMap::<u64, HashMap<u64, bool>>::new();

我成功地将它变成了如下的元组向量:

let mut vector_of_tuples: Vec<(u64, u64, bool)> = vec![];

for (outer_id, inner_hash_map) in items.iter() {
    for (inner_id, state) in inner_hash_map.iter() {
        vector_of_tuples.push((*outer_id, *inner_id, *state));
    }
}

但是我想缩小这种代码逻辑,可能借助Rust标准库中的MapZip函数。

在不使用for循环的情况下如何获得相同的结果?

用户名

在不使用for循环的情况下如何获得相同的结果?

您可以使用collect()从迭代器构建向量而无需显式循环:

    let vector_of_tuples: Vec<(u64, u64, bool)> = items
        .iter()
        // ...
        .collect();

要将内部哈希映射的内容扩展到迭代器中,可以使用flat_map

    let vector_of_tuples: Vec<_> = items
        .iter()
        .flat_map(|(outer_id, inner_hash_map)| {
            inner_hash_map
                .iter()
                .map(move |(inner_id, state)| (*outer_id, *inner_id, *state))
        })
        .collect();

在许多情况下,链接迭代器适配器将比等效for循环生成更多可理解的代码,因为迭代器以声明性样式编写,并且往往不需要副作用。但是,在这种特殊情况下,原始for循环实际上可能是更具可读性的选项。YMMV,最好的选择有时取决于您和其他项目贡献者的编程背景。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在没有嵌套 for 循环的情况下在 Python 中连接两个字符串元素列表

来自分类Dev

是否可以在没有$ q.defer()的情况下在AngularJS $ q中分叉并嵌套两个嵌套线程?

来自分类Dev

在没有两个查询的情况下如何在Knex中执行此操作

来自分类Dev

如何在没有嵌套查询的情况下在MySQL中执行组聚合?

来自分类Dev

如何在没有循环依赖的情况下在GraphQL中拆分模式?

来自分类Dev

如何在没有for循环的情况下在Matlab中获得某个输出?

来自分类Dev

如何在没有for循环的情况下对两个矩阵的每一列进行快速矩阵乘法?

来自分类Dev

如何在没有for循环的情况下从两个断点创建长度为n的布尔掩码?

来自分类Dev

如何在Swift中在没有代码重复的情况下实现具有相同内容的两个init?

来自分类Dev

Django 中的两个表单-如何在没有所有字段的情况下使表单可提交?

来自分类Dev

如何在不使用struct的情况下在一个函数中返回两个值?

来自分类Dev

如何在不使用boost或创建模板的情况下在c ++中同时对两个向量进行排序?

来自分类Dev

如何在不创建两个类的情况下在MySQL中实现对偶关系(Null,Not Null)?

来自分类Dev

如何在不使用Java中的全局变量的情况下在两个类之间共享变量?

来自分类Dev

如何在不使用 Underscore 或 Lodash 的情况下在 javascript 中组合两个对象数组?

来自分类Dev

如何在不重叠的情况下在ListView的一行中添加两个按钮

来自分类Dev

如何在没有ffffeg的情况下合并两个文件

来自分类Dev

如何在没有任何条件的情况下链接两个选择?

来自分类Dev

CSS:如何在没有类的情况下区分两个相同的标签?

来自分类Dev

如何在没有默认“排序”的情况下加入两个集合

来自分类Dev

如何在没有for循环的情况下在2D numpy数组中设置多个列?

来自分类Dev

如何在没有for循环的情况下在2D numpy数组中设置多个列?

来自分类Dev

如何在没有Windows隐藏文件的情况下在Ubuntu上打开NTFS分区?

来自分类Dev

如何在没有Windows隐藏文件的情况下在Ubuntu上打开NTFS分区?

来自分类Dev

两个如何在没有任何索引的情况下合并两个数据帧

来自分类Dev

如何在没有for循环的情况下在twilio api中发送批量短信

来自分类Dev

如何在没有容器对象的情况下在每个循环中呈现视图?

来自分类Dev

如何在没有for循环的情况下在python列表/数组上迭代执行操作?

来自分类Dev

如何在没有额外键的情况下在循环中创建数组对象?

Related 相关文章

  1. 1

    在没有嵌套 for 循环的情况下在 Python 中连接两个字符串元素列表

  2. 2

    是否可以在没有$ q.defer()的情况下在AngularJS $ q中分叉并嵌套两个嵌套线程?

  3. 3

    在没有两个查询的情况下如何在Knex中执行此操作

  4. 4

    如何在没有嵌套查询的情况下在MySQL中执行组聚合?

  5. 5

    如何在没有循环依赖的情况下在GraphQL中拆分模式?

  6. 6

    如何在没有for循环的情况下在Matlab中获得某个输出?

  7. 7

    如何在没有for循环的情况下对两个矩阵的每一列进行快速矩阵乘法?

  8. 8

    如何在没有for循环的情况下从两个断点创建长度为n的布尔掩码?

  9. 9

    如何在Swift中在没有代码重复的情况下实现具有相同内容的两个init?

  10. 10

    Django 中的两个表单-如何在没有所有字段的情况下使表单可提交?

  11. 11

    如何在不使用struct的情况下在一个函数中返回两个值?

  12. 12

    如何在不使用boost或创建模板的情况下在c ++中同时对两个向量进行排序?

  13. 13

    如何在不创建两个类的情况下在MySQL中实现对偶关系(Null,Not Null)?

  14. 14

    如何在不使用Java中的全局变量的情况下在两个类之间共享变量?

  15. 15

    如何在不使用 Underscore 或 Lodash 的情况下在 javascript 中组合两个对象数组?

  16. 16

    如何在不重叠的情况下在ListView的一行中添加两个按钮

  17. 17

    如何在没有ffffeg的情况下合并两个文件

  18. 18

    如何在没有任何条件的情况下链接两个选择?

  19. 19

    CSS:如何在没有类的情况下区分两个相同的标签?

  20. 20

    如何在没有默认“排序”的情况下加入两个集合

  21. 21

    如何在没有for循环的情况下在2D numpy数组中设置多个列?

  22. 22

    如何在没有for循环的情况下在2D numpy数组中设置多个列?

  23. 23

    如何在没有Windows隐藏文件的情况下在Ubuntu上打开NTFS分区?

  24. 24

    如何在没有Windows隐藏文件的情况下在Ubuntu上打开NTFS分区?

  25. 25

    两个如何在没有任何索引的情况下合并两个数据帧

  26. 26

    如何在没有for循环的情况下在twilio api中发送批量短信

  27. 27

    如何在没有容器对象的情况下在每个循环中呈现视图?

  28. 28

    如何在没有for循环的情况下在python列表/数组上迭代执行操作?

  29. 29

    如何在没有额外键的情况下在循环中创建数组对象?

热门标签

归档