Quelle est la différence entre usize et u32 en Rust ? Quand utiliser quoi ?
Bonjour à tous ! J'ai commencé à apprendre Rust il y a quelques semaines et je suis tombé sur un point flou. Dans le livre The Rust Programming Language, je vois souvent l'utilisation du type `usize` pour les indices et les longueurs, mais je rencontre aussi `u32`. Je n'arrive pas à comprendre la différence fondamentale entre eux.
Par exemple, j'ai écrit un programme simple qui parcourt les éléments d'un vecteur :
```rust
fn main() {
let v = vec![10, 20, 30, 40, 50];
// Variante 1 : j'utilise u32
for i in 0..v.len() as u32 {
println!("{}", v[i as usize]);
}
// Variante 2 : j'utilise usize
for i in 0..v.len() {
println!("{}", v[i]);
}
}
```
La première variante fonctionne, mais je dois faire beaucoup de conversions de type : `as u32` et `as usize`. La deuxième variante fonctionne sans conversions. Mais j'ai entendu dire que `u32` prend moins de mémoire et pourrait être plus efficace. Est-ce vrai ?
J'ai aussi remarqué que si j'écris `let x: usize = 42;` et que j'essaie de l'additionner avec un `u32`, le compilateur râle. Pourquoi Rust est-il si strict ?
No answers yet.
Connectez-vous pour laisser une réponse