2

Rustで機能するように2次元配列を渡す方法を知っている人はいますか? 関数は配列の値を変更する必要があります。

これは私が配列を作成する方法です:

let state=[mut [mut 0u8, ..4], ..4];

ありがとう。

4

1 に答える 1

2

(注:この質問が尋ねられたとき、まだ出ていなかった錆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]) {}
于 2013-01-17T05:50:17.663 に答える