在Rust中指定数组大小时,C的#define相当于什么?

teh*_*yit 0 rust

我开始学习Rust,我有C.的背景知识.

我试图将以下代码片段从C转换为Rust.该代码定义了uint8_t一个在编译时定义的大小的数组.

#define GRID_SIZE  100

uint8_t grid[GRID_SIZE];
memset (grid, 0x00, GRID_SIZE);
Run Code Online (Sandbox Code Playgroud)

我在Rust中尝试了以下内容

let grid_size: i32 = 10;
let mut grid: [i32; grid_size] = [0; grid_size];
Run Code Online (Sandbox Code Playgroud)

编译器抱怨说 error: use of undeclared type name `grid_size` [E0412]

查找错误E0412并没有提供任何线索.这可能在Rust吗?

Yas*_*mez 5

锈只允许编译时固定大小的阵列(在存储器的相同尺寸的事情动态大小的跨度被称为切片和仅可通过参考到另一个容器中,如一个Vec).此外,在实例化它们时,它需要一个无符号类型usize,而不是一个i32.尝试

const GRID_SIZE: usize = 10;

fn main() {
    let mut grid: [i32; GRID_SIZE] = [0; GRID_SIZE];
}
Run Code Online (Sandbox Code Playgroud)