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

时间:2012-11-05 22:07:34

标签: arrays function rust

有人知道如何传递二维数组以在Rust中运行吗?该函数需要更改数组的值。

这就是我创建数组的方式:

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

感谢。

1 个答案:

答案 0 :(得分:2)

(nb:生锈0.5,当问到这个问题时还没有出来)

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

fn func(state: int) {}

产生

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]) {}

如果你想在函数内部实际更改state,你需要一个指向它的可变指针,所以最后:

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

// ...

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