过滤 HashMap 时无限循环

问题描述 投票:0回答:1
let filterd_voxels: Vec<_> = voxel_array
    .keys()
    .filter(|n| n.x == voxel.0.x && n.z == voxel.0.z)
    .collect();

我试图在 for 循环中获取当前体素上方和下方的所有体素。它无限迭代 n,因为它不会被消耗。我尝试用

collect()
修复它,但我可能用错了?

我的

voxel_array
包括:

HashMap<
    Position { x: u8, y: u8, z: u8 },
    Voxel { id: u8 },
>

其最终目标是检查当前体素是否是块中该 x,z 位置上的底部体素。 (注意:我并不是指块的底部 (y: 0),因为它比 HashMap 中的体素更向下。)

rust hashmap
1个回答
0
投票

最终使用了这个:

    let x = voxel.0.x;
    let z = voxel.0.z;
    let maybe_min_y = (MIN..=MAX)
        .filter(|&y| voxel_array.contains_key(&Position { x, y, z }))
        .next();

    if maybe_min_y.unwrap() == voxel.0.y {
        continue;
    }
© www.soinside.com 2019 - 2024. All rights reserved.