arrays - 如何在 Rust 的全局范围内指定 const 数组?

标签 arrays static literals rust

当我尝试使用此代码在全局范围内添加一个 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/

相关文章:

c - 数组内某个范围内的随机数

java - 抽出一张牌后将其丢弃

c# - LiteralExpression - ArgumentOutOfRangeException

c++ - 在 C++ 中使用 scanLine() 方法存储所有 QImage 的像素

python - 在混合数据列表中求和

java - Apache ActiveMQ 非动态连接到主题

c# - 扩展 SqlException 并向其添加属性

类属性中的 PHP 函数调用

python - 解释器维护的整数缓存有什么用?

function - 带有隐式的 Scala 函数式文字