String vs. &str
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 54 von 66.
Rust hat zwei Haupt-String-Typen, die unterschiedliche Zwecke erfüllen: String und &str. Das Verständnis des Unterschieds zwischen ihnen ist entscheidend für die effektive Arbeit mit Text in Rust.
Ein String ist eine eigene, auf dem Heap allozierte Zeichenkette, die Sie ändern können. Wenn Sie einen String erstellen, besitzt Ihr Programm diese Daten und ist für die Verwaltung des Speichers verantwortlich. Sie können ihn vergrößern, verkleinern und seinen Inhalt ändern, da er veränderbar ist, wenn er mit mut deklariert wird.
let mut my_string = String::from("Hello");
my_string.push_str(" World"); // Dies funktioniert, da String ein Owned-Typ und veränderbar istIm Gegensatz dazu ist &str (ausgesprochen „String Slice“) eine geliehene, unveränderliche Sicht auf String-Daten. Es besitzt die Daten nicht, auf die es zeigt – es ist lediglich eine Referenz auf einen String-Inhalt, der an anderer Stelle existiert. String-Literale wie "Hello" sind tatsächlich vom Typ &str.
let my_slice: &str = "Hello World"; // Dies ist ein String-SliceStellen Sie sich String wie den Besitz eines Buches vor, in das Sie schreiben und das Sie ändern können, während &str wie das Ausleihen des Buches von jemand anderem ist – Sie können es lesen, aber Sie können es nicht ändern. Diese Unterscheidung ist grundlegend für das Ownership-System von Rust und hilft dabei, die Speichersicherheit zu gewährleisten.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Spickzettel
Rust hat zwei Haupt-String-Typen:
String- besessener, Heap-allozierter, veränderbarer String&str- geliehener, unveränderbarer String-Slice (Referenz auf String-Daten)
Erstellen eines String:
let mut my_string = String::from("Hello");
my_string.push_str(" World");String-Literale sind vom Typ &str:
let my_slice: &str = "Hello World";String besitzt seine Daten und kann geändert werden, während &str eine Referenz ist, die nicht geändert werden kann.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler Code6Umgang mit fehlenden Werten mit 'Option'
Was ist ein 'Option'?'match' mit 'Option' verwendenis_some() und is_none()Ein 'Option' entpackenDie 'expect'-MethodeStandardwert bereitstellen: unwrap_orRückblick – Ein Element finden9String-Slices und mehr
String vs. &strString-Slices erstellenSlices als FunktionsparameterWeitere SlicesRückblick – Das erste Wort finden