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 中的体素更向下。)
最终使用了这个:
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;
}