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/

相关文章:

Python - 将列表元素与 'neighbour' 元素进行比较

c++ - 在 C++ 中实例化私有(private)字符串数组

c++ - 用char初始化多维数组?

java - 在二维数组中移动的最佳方式(棋盘游戏)

PHP MySQL 多维数组 - 下拉菜单

检查和为0的子数组是否存在

C# 向具有现有大小的数组添加和删除元素

c++ - 为什么 vector<int> 在以下情况下比 vector<bool> 快

c++ - 将具有 vector 成员的数据结构写入二进制文件

c++ - vector 排序算法,只对大于 0 的元素进行排序