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]
}
}
}
私はこれについて間違っていますか?それは非常にゆっくりと実行され、大きなサイズでセグメンテーション違反が発生しました。おそらく、タイルの 3 次元空間 (レイヤー、幅、高さ) を格納するためのより良い方法はありますか?
編集:これは、これらのタイルを可変にしようとする前です