在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]
}
}
}
我是不是错了?它运行得非常慢,大尺寸分段。也许有更好的方法来存储瓷砖的三维空间(层,宽度,高度)?
编辑:这是在我尝试制作那些Tiles可变的
之前答案 0 :(得分:4)
[[[Tile, ..256], ..256], ..6]
是堆栈分配的,它可能大约是60MB。尝试~[~[~[Tile, ..256], ..256], ..6]
,这是一个拥有的指针(在发送堆上分配,拥有指针可以跨任务发送)