当我尝试使用以下代码在全局范围内添加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];
有更好的方法吗?应该可以创建一个数组,而无需手动计算其元素。
答案 0 :(得分:35)
在大多数情况下,使用[T; N]
是正确的方法;这样就没有任何拳击价值。但是,还有另一种方法,它有时也很有用,但效率略低(由于指针间接):&'static [T]
。在你的情况下: -
static NUMBERS: &'static [i32] = &[1, 2, 3, 4, 5];
答案 1 :(得分:3)
您可以使用 const
,这是一个示例:
const NUMBERS: &'static [i32] = &[1, 2, 3, 4, 5];