Rustで機能するように2次元配列を渡す方法を知っている人はいますか? 関数は配列の値を変更する必要があります。
これは私が配列を作成する方法です:
let state=[mut [mut 0u8, ..4], ..4];
ありがとう。
(注:この質問が尋ねられたとき、まだ出ていなかった錆0.5)
値の型を見つける愚かな方法は、間違った型で関数を書き、それを渡そうとすることです。:)
fn func(state: int) {}
生成:
error: mismatched types: expected `int` but found `[mut [mut u8]/4]/4` (expected int but found vector)
それがあなたのタイプです。ただし、実際にはそのように書かれていないため、この出力にはバグがあるようです。コンパイラに尋ねるだけです。あなたは実際に欲しい:
fn func(state: [mut [mut u8 * 4] * 4]) { ... }
しかし、mut
内部のベクトルは非推奨です。変数自体を作成しても同じ効果が得られますmut
。これにより、次のことがわかります。
let mut state = [[0u8, ..4], ..4];
func(state);
// ...
fn func(state: [[u8 * 4] * 4]) {}
関数内で実際に変更したい場合はstate
、関数への変更可能なポインターが必要になるため、最終的には次のようになります。
let mut state = [[0u8, ..4], ..4];
func(&mut state);
// ...
fn func(state: &mut [[u8 * 4] * 4]) {}