在c#中我可以这样做
class Map {
public Tile[, ,] Location = new Tile[6, 256, 256];
}
,然后使用类似Location[2, 40, 20]
我试图在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]
,这是一个自有指针(分配在发送堆上,自有指针可以跨任务发送)