web-dev-qa-db-fra.com

Quelle est la différence entre «usize» et «u32»?

La documentation indique que usize est

Opérations et constantes pour les entiers non signés de la taille d'un pointeur.

Dans la plupart des cas, je peux remplacer usize par u32 et rien ne se passe. Je ne comprends donc pas pourquoi nous avons besoin de deux types qui se ressemblent.

47
Vayn

Comme la documentation indique que usize est de la taille d'un pointeur, sa taille réelle dépend donc de l'architecture pour laquelle vous compilez votre programme.

Par exemple, sur un ordinateur x86 32 bits, usize = u32, sur les ordinateurs x86_64, usize = u64.

usize vous donne la garantie d'être toujours suffisamment grand pour contenir tout pointeur ou tout décalage dans une structure de données, tandis que u32 peut être trop petit sur certaines architectures.

79
Levans