arrays - 在 Rust 中创建二维数组

标签 arrays vector multidimensional-array rust

我如何在 Rust 中创建一个空的可变二维数组?

这是我目前尝试过的:

let mut state[[u8 * 4] * 4];

这会产生错误

error: expected one of `:`, `;`, `=`, or `@`, found `[`
 --> src/main.rs:2:18
  |
2 |     let mut state[[u8 * 4] * 4];
  |                  ^ expected one of `:`, `;`, `=`, or `@` here

最佳答案

在 Rust 1.0 中,以下工作:

let mut state = [[0u8; 4]; 6];
state[0][1] = 42;

请注意,内部段的长度是类型的组成部分。例如,您可以按如下方式引用(并传递)state:

let a: &[[u8; 4]] = &state;

但并非没有指定子数组的固定长度。如果你需要可变长度的子数组,你可能需要做这样的事情:

let x: [Box<[u8]>; 3] = [
    Box::new([1, 2, 3]),
    Box::new([4]), 
    Box::new([5, 6])
];
let y: &[Box<[u8]>] = &x;

关于arrays - 在 Rust 中创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212212/

相关文章:

java - 通过将两个整数数组的值一对一地求和来合并两个整数数组

c++ - 为什么这个程序崩溃了

php - PHP-将CSV格式的二维数组重新格式化为适合MYSQL导入的模式

c - 当传递给函数指针然后返回到 c 中时,字符串打印出垃圾

arrays - 数组中的维数和下标数不正确

c++ - 解析字节数组中的 Unicode

arrays - 数组 vba 的最高填充维度

java - 在数组末尾添加对象

c++ - 使用 copy+back_inserter 将文件流式传输到 vector<float>

list - 如何使用 chez 方案获取给定列表中所有元素 >10 的总和?