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.
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.