2

有人知道如何将二维数组传递给 Rust 函数吗?该函数需要更改数组的值。

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

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

谢谢。

4

1 回答 1

2

(nb:rust 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 回答