Mehrzeilige Strings in Rust: Syntax, Beispiele und Geheimnisse

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Mehrzeilige Strings in Rust: Wie man nicht den Verstand an Anführungszeichen und Backslashes verliert

\n\n

Hallo, Freund! Wenn du jemals in Python geschrieben hast, weißt du, dass es dort ein Kinderspiel ist, einen mehrzeiligen String zu erstellen: drei Anführungszeichen """...""" – und fertig. Aber sobald du zu Rust gewechselt bist, hast du plötzlich gemerkt, dass der gewohnte Trick nicht funktioniert. Und jetzt googelst du: «What is the syntax for a multiline string literal?». Kommt dir bekannt vor?

\n\n

Keine Sorge, das ist die häufigste Frage von Anfängern in Rust, die auf Stack Overflow tausende Aufrufe hat. Und heute werden wir ein für alle Mal klären, wie man in Rust mit langen Strings arbeitet, ohne sich den Kopf zu zerbrechen. Los geht's!

\n\n

Warum Rust keine dreifachen Anführungszeichen mag (wie Python)?

\n\n

Rust ist eine systemnahe und strenge Sprache. Sie verzeiht keine Freiheiten. Dreifache Anführungszeichen """ sind in Rust nicht die Syntax für mehrzeilige Strings, sondern der Beginn eines Kommentars oder einer Dokumentation (wenn es /// ist). Wenn du also versuchst, Folgendes zu schreiben:

\n\n
// ❌ So funktioniert es nicht!\nlet text = """Das\nist ein\nmehrzeiliger String""";\n
\n\n

Wird der Compiler dich tadelnd ansehen und einen Fehler ausgeben. In Rust wird ein anderer Ansatz für mehrzeilige Strings verwendet – und der ist sogar cooler als in Python!

\n\n

Methode Nr. 1: Normale Anführungszeichen und Zeilenumbruch

\n\n

Der einfachste Weg ist, den String im Code einfach zu unterbrechen, indem du das Zeichen \\n innerhalb des Strings verwendest. Aber das ist langweilig und schwer lesbar. Viel interessanter ist die Verwendung eines echten Zeilenumbruchs innerhalb von doppelten Anführungszeichen. Rust erlaubt das!

\n\n
// ✅ Funktioniert!\nlet poem = "Hier ein Beispiel für einen String,\nder zwei Zeilen umfasst,\nund das ist in Rust völlig legal.";\nprintln!("{}", poem);\n
\n\n

Die Ausgabe enthält Zeilenumbruchzeichen an den Stellen, an denen du sie im Code gesetzt hast. Es gibt jedoch einen Haken: Wenn du Einrückungen (Leerzeichen am Zeilenanfang) beibehalten möchtest, werden auch diese in den String übernommen. Manchmal ist das nützlich, manchmal nicht.

\n\n

Methode Nr. 2: Escaping und Backslash – dein Freund (und Feind)

\n\n

Wenn du einen langen String im Code schreiben musst, aber keine Zeilenumbrüche hinzufügen möchtest (z. B. aus Lesbarkeitsgründen), verwende einen Backslash am Ende der Zeile:

\n\n
// ✅ String ohne Zeilenumbrüche, aber lesbar im Code\nlet long_string = "Dies ist ein sehr langer String, \\\nder im Code auf mehrere Zeilen aufgeteilt ist, \\\naber im Speicher ein einziger String ohne \\n sein wird.";\nprintln!("{}", long_string);\n
\n\n

Beachte: Nach dem Backslash dürfen keine Leerzeichen stehen – sofort Enter. Sonst denkt Rust, du escapst ein Leerzeichen, und alles bricht zusammen.

\n\n

Methode Nr. 3: Raw String Literals – Magie ohne Escaping

\n\n

Und das ist nun die Geheimwaffe von Rust. Wenn du einen String schreiben musst, der viele Anführungszeichen, Backslashes oder andere Sonderzeichen enthält (z. B. JSON, reguläre Ausdrücke oder Windows-Pfade), verwende r"" – rohe String-Literale.

\n\n

Innerhalb von r"..." werden alle Zeichen wörtlich genommen. Kein Escaping nötig!

\n\n
// ✅ Raw string – keine Backslashes nötig!\nlet json = r#"{\n    "name": "Rust",\n    "version": 1.75,\n    "features": ["Sicherheit", "Geschwindigkeit"]\n}"#;\nprintln!("{}", json);\n
\n\n

Was aber, wenn im String "# vorkommt? Dafür erlaubt Rust, die Anzahl der # um die Anführungszeichen zu erhöhen: r##"..."##, r###"..."### und so weiter bis ins Unendliche. Wähle einfach eine Anzahl von Rauten, die im String nicht vorkommt.

\n\n
// ✅ Raw string mit Escaping von Rauten\nlet tricky = r###"Ein String mit "Anführungszeichen" und sogar "#" darin!"###;\nprintln!("{}", tricky);\n
\n\n

Methode Nr. 4: Mehrzeilige raw Strings – die All-in-One-Lösung für komplexe Daten

\n\n

Und jetzt setzen wir alles zusammen. Wenn du einen mehrzeiligen Textblock mit Anführungszeichen, Backslashes und Einrückungen schreiben musst, verwende r#""# mit Zeilenumbrüchen direkt darin:

Blogs

Buchempfehlungen