Как указать массив const в глобальной области в 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];
Есть ли лучший способ? Должно быть возможно создать массив без ручного подсчета его элементов.
Ответы
Ответ 1
Использование [T; N]
- правильный способ сделать это в большинстве случаев; таким образом, нет никакого бокса ценностей вообще. Однако есть и другой способ, который также полезен порой, хотя он немного менее эффективен (из-за косвенности указателя): &'static [T]
. В вашем случае: -
static NUMBERS: &'static [i32] = &[1, 2, 3, 4, 5];