简体   繁体   中英

How to specify const array in global scope in Rust?

When I tried to add a const array in the global scope using this code:

static NUMBERS: [i32] = [1, 2, 3, 4, 5];

I got the following error:

error: mismatched types:
 expected `[i32]`,
    found `[i32; 5]`
(expected slice,
    found array of 5 elements) [E0308]

static NUMBERS2: [i32] = [1, 2, 3, 4, 5];
                         ^~~~~~~~~~~~~~~

The only way I found to deal with this problem is to specify the length in the type:

static NUMBERS: [i32; 5] = [1, 2, 3, 4, 5];

Is there a better way? It should be possible to create an array without manually counting its elements.

Using [T; N] [T; N] is the proper way to do it in most cases; that way there is no boxing of values at all. There is another way, though, which is also useful at times, though it is slightly less efficient (due to pointer indirection): &'static [T] . In your case:—

static NUMBERS: &'static [i32] = &[1, 2, 3, 4, 5];

您可以为此使用const ,这是一个示例:

const NUMBERS: &'static [i32] = &[1, 2, 3, 4, 5];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM