3

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 次元空間 (レイヤー、幅、高さ) を格納するためのより良い方法はありますか?

編集:これは、これらのタイルを可変にしようとする前です

4

1 に答える 1