有人知道如何传递二维数组以在 Rust 中运行吗?该函数需要更改数组的值。
这是我创建数组的方式:
let state=[mut [mut 0u8, ..4], ..4];
谢谢。
最佳答案
(注意: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]) { ... }
但是 vectors 内部的 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]) {}
关于arrays - 将二维数组传递给 Rust 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13241190/