Erstellen von zweidimensionalen arrays in Rust
Wie erstelle ich eine leere veränderlich zwei-dimensionales array in Rust?
Dies ist, was ich bisher versucht habe:
let mut state[[u8 * 4] * 4];
Dieser erzeugt den Fehler
error: expected one of `:`, `;`, `=`, or `@`, found `[`
--> src/main.rs:2:18
|
2 | let mut state[[u8 * 4] * 4];
| ^ expected one of `:`, `;`, `=`, or `@` here
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wollen Sie die Inhalte des Arrays werden veränderliche oder variable, die Sie hält? Wenn Sie möchten, veränderliche Inhalt, macht diese Arbeit für Sie?
Wenn Sie möchten, die variable, die verändert aber nicht den Inhalt, versuchen Sie dies:
Funktioniert diese Hilfe? Ich wollte eigentlich nicht kompilieren, also die syntax geringfügig ab.
&mut [[u8 * 4] * 4]
--- Zeiger auf eine zwei-dimensionale fester Länge-array. Sie würde einfach tun&mut state
zu bekommen, wie ein Zeiger.let mut state = [[0u8; 4]; 4];
.In Rust 1.0, die folgenden Werke:
Beachten Sie, dass die Länge der inneren Bereich ist ein integraler Bestandteil der Art. Zum Beispiel, können Sie die Referenz - (und pass)
state
wie folgt:aber nicht ohne die Angabe der festen Länge des sub-array. Wenn Sie brauchen, variable Länge sub-arrays, die Sie brauchen können, um etwas wie das hier tun:
Können Sie erstellen, die eine dynamisch-size-2D-Vektor so:
...chunks_mut(height)...
vorausgesetzt, der Zugang istgrid[0...width-1][0...height-1]
Initialisierung:
Es gibt mehrere Ansätze für 2D Array-Initialisierung:
Verwendung von Konstanten für M (Zeilen) & N (Spalten)
Explizite Deklaration mit Typ-Annotationen
Traversierung:
Die nur-lese - durchqueren ist so einfach wie:
oder
Aktualisierung element(s):
Idiomatischer C 2-dimensionale arrays werden deklariert, mit der gleichen Reihenfolge der array-Größen verwendet, die beim Zugriff auf das array:
In Rust, die Erklärung Größen sind gespiegelt; erstellen 8 von 16 2-dimensionales array, die syntax ist: