当我尝试使用此代码在全局范围内添加一个 const 数组时:
static NUMBERS: [i32] = [1, 2, 3, 4, 5];
我收到以下错误:
error: mismatched types:
expected `[i32]`,
found `[i32; 5]`
(expected slice,
found array of 5 elements) [E0308]
static NUMBERS2: [i32] = [1, 2, 3, 4, 5];
^~~~~~~~~~~~~~~
我发现处理这个问题的唯一方法是在类型中指定长度:
static NUMBERS: [i32; 5] = [1, 2, 3, 4, 5];
有没有更好的方法?应该可以在不手动计算其元素的情况下创建数组。
最佳答案
使用[T; N]
在大多数情况下是正确的做法;这样根本就没有值(value)装箱。不过,还有另一种方法有时也很有用,尽管它的效率稍低(由于指针间接):&'static [T]
。在你的情况下:—
static NUMBERS: &'static [i32] = &[1, 2, 3, 4, 5];
关于arrays - 如何在 Rust 的全局范围内指定 const 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23810032/