多维向量在锈,分段故障



在c#中我可以这样做

class Map {    
    public Tile[, ,] Location = new Tile[6, 256, 256];
}

,然后使用类似Location[2, 40, 20]

的内容访问任何Tile元素

我试图在Rust中制作类似类型的结构,但我发现语法有点奇怪。我确实想到了这一点,但它分割了大向量大小(耗尽堆栈?):

use tile::Tile // Simple struct with a few Point properties
pub struct Map {
    location: [[[Tile, ..256], ..256], ..6],
}
pub impl Map {
    fn new() -> Map {
        Map {
            // assuming empty_tile is a Tile I've just created
            location: [[[empty_tile, ..256], ..256], ..6]
        }
    }
}

我做错了吗?它运行得非常慢,而且大尺寸会出现分段。也许有更好的方法来存储贴图的三维空间(图层,宽度,高度)?

编辑:这是在我尝试让那些tile可变之前

[[[Tile, ..256], ..256], ..6]是堆栈分配的,它可能有60MB大。试试~[~[~[Tile, ..256], ..256], ..6],这是一个自有指针(分配在发送堆上,自有指针可以跨任务发送)

相关内容

  • 没有找到相关文章

最新更新