Arrays 将二维数组传递给Rust中的函数

Arrays 将二维数组传递给Rust中的函数,arrays,function,rust,Arrays,Function,Rust,有人知道如何通过二维数组在Rust中运行吗?函数需要更改数组的值 以下是我创建阵列的方式: let state=[mut [mut 0u8, ..4], ..4]; 谢谢。(注意:rust 0.5,当被问到这个问题时还没有出来) 找出值类型的愚蠢方法是使用错误的类型编写函数,然后尝试传递它。:) 产生: error: mismatched types: expected `int` but found `[mut [mut u8]/4]/4` (expected int but found v

有人知道如何通过二维数组在Rust中运行吗?函数需要更改数组的值

以下是我创建阵列的方式:

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

(注意:rust 0.5,当被问到这个问题时还没有出来)

找出值类型的愚蠢方法是使用错误的类型编写函数,然后尝试传递它。:)

产生:

error: mismatched types: expected `int` but found `[mut [mut u8]/4]/4` (expected int but found vector)
那就是你喜欢的类型。除了它实际上已经不是那样写的了,所以在这个输出中似乎有一个bug。只需询问编译器就可以了。你实际上想要:

fn func(state: [mut [mut u8 * 4] * 4]) { ... }
但是
mut
内向量有点不推荐;通过使变量本身
mut
,可以获得相同的效果。这使我们想到:

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

// ...

fn func(state: [[u8 * 4] * 4]) {}
如果您想在函数中实际更改
状态
,则需要一个指向它的可变指针,因此最后:

let mut state = [[0u8, ..4], ..4];
func(&mut state);

// ...

fn func(state: &mut [[u8 * 4] * 4]) {}
let mut state = [[0u8, ..4], ..4];
func(&mut state);

// ...

fn func(state: &mut [[u8 * 4] * 4]) {}