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 mutableEn 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îneConsidé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.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
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.
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
1Structures de contrôle avancées
L'expression 'match'Filtrage de plusieurs valeursFiltrage d'intervallesL'expression 'if let'Les boucles en tant qu'expressionsRécapitulatif - Analyseur de commandes simple4Regrouper des données avec les structures
Qu'est-ce qu'une structure ?Aperçu des structuresAccéder aux champs d'une structureStructures mutablesLes structures comme paramètres de fonctionStructures tupleRécapitulatif - Créer une structure Book2Introduction aux vecteurs
Qu'est-ce qu'un vecteur ?Créer un vecteurAjouter des éléments avec pushAccéder aux éléments d'un vecteurItérer sur un vecteurItération mutableSupprimer des élémentsRécapitulatif - Suivi de score basique5Paires clé-valeur avec les Hash Maps
Qu'est-ce qu'une Hash Map ?Créer une Hash MapInsérer des paires clé-valeurAccéder aux valeursParcourir une Hash MapMettre à jour une valeurSupprimer une paireRécapitulatif - Compteur de mots8Projet : Inventaire d'articles simple
Configuration du projetAjouter un articleVérifier le stockVendre un articleAssembler le tout3Liste de tâches en ligne de commande
Configuration du projetAjouter une tâcheAfficher toutes les tâchesSupprimer une tâcheCode final6Gérer l'absence avec 'Option'
Qu'est-ce qu'une 'Option' ?Utiliser 'match' avec 'Option'is_some() et is_none()Déballer une 'Option'La méthode expectFournir une valeur par défaut : unwrap_orRécapitulatif - Trouver un élément9Slices de chaînes et plus encore
String vs. &strCréer des slices de chaînesLes slices comme paramètres de fonctionAutres types de slicesRécapitulatif - Trouver le premier mot