Lorsque j'ai essayé d'ajouter un tableau const dans la portée globale à l'aide de ce code:
static NUMBERS: [i32] = [1, 2, 3, 4, 5];
J'ai eu l'erreur suivante:
error: mismatched types:
expected `[i32]`,
found `[i32; 5]`
(expected slice,
found array of 5 elements) [E0308]
static NUMBERS2: [i32] = [1, 2, 3, 4, 5];
^~~~~~~~~~~~~~~
La seule façon que j'ai trouvée pour résoudre ce problème est de spécifier la longueur dans le type:
static NUMBERS: [i32; 5] = [1, 2, 3, 4, 5];
Y a-t-il une meilleure façon? Il devrait être possible de créer un tableau sans compter manuellement ses éléments.
En utilisant [T; N]
est la manière appropriée de le faire dans la plupart des cas; de cette façon, il n'y a pas du tout de boxe de valeurs. Il existe cependant une autre méthode, qui est parfois utile, bien qu'elle soit légèrement moins efficace (en raison de l'indirection du pointeur): &'static [T]
. Dans ton cas:-
static NUMBERS: &'static [i32] = &[1, 2, 3, 4, 5];