Menu
Coddy logo textTech

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 ist

Im 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-Slice

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

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

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.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow