La création de deux dimensions des tableaux dans la Rouille
Comment puis-je créer un vide mutable tableau à deux dimensions dans la Rouille?
C'est ce que j'ai essayé jusqu'à présent:
let mut state[[u8 * 4] * 4];
Ce qui produit l'erreur
error: expected one of `:`, `;`, `=`, or `@`, found `[`
--> src/main.rs:2:18
|
2 | let mut state[[u8 * 4] * 4];
| ^ expected one of `:`, `;`, `=`, or `@` here
OriginalL'auteur php-- | 2012-11-03
Vous devez vous connecter pour publier un commentaire.
Voulez-vous que le contenu du tableau à mutable ou la variable qui contient-il? Si vous voulez mutable contenu, fait ce travail pour vous?
Si vous voulez de la variable mutable mais pas le contenu, essayez ceci:
Cela vous aide? Je n'ai pas fait la compilation, donc la syntaxe pourrait être légèrement en dehors.
Vous pouvez transmettre la valeur de deux façons. Une option serait
&mut [[u8 * 4] * 4]
--- pointeur à deux dimensions, la longueur fixe de tableau. Vous faites juste&mut state
pour obtenir un pointeur.Oh, et, normalement, avoir une mutable variable comme ceci permettrait également de muter les éléments d'une longueur fixe de tableau, comme ils sont la propriété de la variable. Malheureusement, ce bug <github.com/mozilla/rust/issues/3226> vous empêchera de vous pour l'instant.
Cela ne fonctionne plus.
Pour les futurs visiteurs: c'est une pré-version 1.0 de la rouille, il y a une autre réponse ci-dessous avec une mise à jour de la syntaxe.
let mut state = [[0u8; 4]; 4];
.OriginalL'auteur Eric Holk
À Rust 1.0, les ouvrages suivants:
Noter que la longueur de l'intérieur du segment est une partie intégrante de la type. Par exemple, vous pouvez référencer (et réussir)
state
comme suit:mais pas sans spécifier la longueur fixe de la sous-matrice. Si vous avez besoin de longueur variable sous-tableaux vous devrez peut-être faire quelque chose comme ceci:
Grâce hardy, mais "(et, oui, la mutabilité travaille maintenant)" -> comment voulez-vous accès et de muter un élément ?
en deux ans, depuis votre commentaire a été posté vérification des limites doivent avoir été correctement mis en œuvre, que je reçois le temps de compilation des erreurs lors de la tentative de sortir des limites d'un accès sur l'extérieur et à l'intérieur des tableaux.
OriginalL'auteur dhardy
Vous pouvez créer une dynamique, de taille moyenne vectorielle 2D comme ceci:
...chunks_mut(height)...
en supposant que l'accès estgrid[0...width-1][0...height-1]
OriginalL'auteur Procrade
Idiomatiques C 2-dimensions des tableaux sont déclarées à l'aide du même ordre de la taille des matrices utilisées lors de l'accès au tableau:
Dans la Rouille, la déclaration tailles sont retournées; de créer un 8 par 16 tableau en 2 dimensions, la syntaxe est la suivante:
OriginalL'auteur spatulaninja
Initialisation:
Il existe plusieurs approches pour la 2D initialisation de Tableau:
À l'aide des constantes de M (lignes) & N (colonnes)
Déclaration explicite avec les annotations de type
Déplacement:
Le en lecture seule traversant est aussi simple que:
ou
La mise à jour de l'élément(s):
OriginalL'auteur magiccrafter