Ole*_*sky 33 arrays static literals rust
当我尝试使用以下代码在全局范围中添加const数组时:
static NUMBERS: [i32] = [1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
error: mismatched types:
expected `[i32]`,
found `[i32; 5]`
(expected slice,
found array of 5 elements) [E0308]
static NUMBERS2: [i32] = [1, 2, 3, 4, 5];
^~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
我发现处理这个问题的唯一方法是在类型中指定长度:
static NUMBERS: [i32; 5] = [1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?应该可以创建一个数组而无需手动计算其元素.
Chr*_*gan 37
[T; N]在大多数情况下,使用是正确的方法; 这样就没有任何拳击价值.还有另一种方法,但是,这也是有时是有用的,尽管它稍微效率较低(由于指针间接): &'static [T].在你的情况下: -
static NUMBERS: &'static [i32] = &[1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)
Grz*_*ski 10
您可以使用const它,这是一个示例:
const NUMBERS: &'static [i32] = &[1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)