我开始学习Rust,我有一个C语言背景。
我正在尝试将以下代码段从C转换为Rust。该代码定义了一个uint8_t
数组,其大小在编译时定义。
#define GRID_SIZE 100
uint8_t grid[GRID_SIZE];
memset (grid, 0x00, GRID_SIZE);
我在Rust
中尝试了以下内容let grid_size: i32 = 10;
let mut grid: [i32; grid_size] = [0; grid_size];
编译器抱怨error: use of undeclared type name `grid_size` [E0412]
查找错误E0412并未向我提供任何线索。这可能在Rust吗?
答案 0 :(得分:5)
Rust只允许编译时固定大小的数组(内存中相同大小的事物的动态大小跨度称为切片,只能通过引用到另一个容器,如Vec
)。此外,在实例化它们时,它需要像usize
这样的无符号类型,而不是i32
。尝试
const GRID_SIZE: usize = 10;
fn main() {
let mut grid: [i32; GRID_SIZE] = [0; GRID_SIZE];
}