La différence entre String et &str en Rust expliquée simplement
La différence entre String et &str en Rust expliquée simplement
En Rust, la différence fondamentale entre String et &str réside dans la propriété des données et leur mutabilité. Un String est un propriétaire (owner) de ses données : il alloue de la mémoire sur le tas et peut grandir dynamiquement. Il est composé d'un pointeur, d'une longueur et d'une capacité. En revanche, une référence à str (ou &str) est une vue (slice) sur une zone de mémoire existante. Elle ne possède pas les données, ne peut pas grandir, et se contente de pointer vers un début et une longueur définis. Cette distinction est cruciale pour la gestion de la mémoire : le String gère le cycle de vie des données, tandis que la &str est immuable et légère, idéale pour lire du texte sans en prendre la responsabilité.
Exemple : Imaginez une chaîne de caractères "Bonjour" stockée en mémoire. Un String contient les octets de "Bonjour" et peut être modifié pour devenir "Bonjour !" (il a la capacité de s'agrandir). Une &str, elle, pointe simplement vers les 7 premiers caractères de cette zone mémoire. Si vous essayez de modifier la &str, le compilateur bloquera l'opération car elle n'a pas le droit d'écrire dans cette zone, contrairement au String qui contrôle sa propre mémoire.