Menu
Coddy logo textTech

String vs. &str

Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 54 sur 66.

Rust possède deux types de chaînes principaux qui servent des objectifs différents : String et &str. Comprendre la différence entre les deux est crucial pour travailler efficacement avec du texte en Rust.

Une String est une chaîne de caractères possédée et allouée sur le tas que vous pouvez modifier. Lorsque vous créez une String, votre programme possède ces données et est responsable de la gestion de sa mémoire. Vous pouvez l'agrandir, la réduire et modifier son contenu car elle est mutable lorsqu'elle est déclarée avec mut.

let mut my_string = String::from("Hello");
my_string.push_str(" World"); // Cela fonctionne car String est détenu et mutable

En revanche, &str (prononcé « string slice ») est une vue empruntée et immuable sur des données de chaîne. Il ne possède pas les données vers lesquelles il pointe - c'est simplement une référence à un contenu de chaîne qui existe ailleurs. Les chaînes littérales comme "Hello" sont en réalité de type &str.

let my_slice: &str = "Hello World"; // Ceci est une tranche de chaîne

Considérez String comme le fait de posséder un livre dans lequel vous pouvez écrire et que vous pouvez modifier, tandis que &str est comme emprunter le livre de quelqu'un d'autre : vous pouvez le lire, mais vous ne pouvez pas le modifier. Cette distinction est fondamentale pour le système de possession (ownership) de Rust et aide à garantir la sécurité de la mémoire.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Aide-mémoire

Rust possède deux types de chaînes principaux :

  • String - chaîne possédée, allouée sur le tas, mutable
  • &str - tranche de chaîne empruntée, immuable (référence à des données de chaîne)

Création d'une String :

let mut my_string = String::from("Hello");
my_string.push_str(" World");

Les littéraux de chaîne sont de type &str :

let my_slice: &str = "Hello World";

String possède ses données et peut être modifiée, tandis que &str est une référence qui ne peut pas être changée.

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow