← SEARCHABLE ARCHIVE
Rust · 2026-07-23

Rust von den Grundlagen bis zum Profi — Folge 3

Eigentum, Ausleihe und Slices mit Code verbinden

INTERACTIVE READING MODE →

Die in diesem Blog verfassten Artikel wurden mit dem Ziel erstellt, zu unterrichten. Außerdem können die Informationen im Artikel falsch sein, also seien Sie bitte vorsichtig.

Der Besitz in Rust ist eine Regel, die zur Kompilierzeit bestimmt, wer den Speicher bereinigt. Geben Sie im Funktionstyp an, ob der Wert verschoben, schreibgeschützt oder veränderbar sein soll.

Wert verschieben

fn print_name(name: String) {
    println!("{name}");
}

let player_name = String::from("Rose");
print_name(player_name);
//Spielername kann hier nicht erneut verwendet werden.

String besitzt Heap-Daten, daher verschiebt sich der Besitz beim Zuweisen oder Übergeben von Werten. Damit das Original gültig bleibt, müssen Sie es explizit kopieren oder referenzieren.

Unveränderliche und veränderliche Referenzen

fn print_name(name: &str) {
    println!("{name}");
}

fn add_suffix(name: &mut String) {
    name.push_str("_01");
}

let mut player_name = String::from("Rose");
print_name(&player_name);
add_suffix(&mut player_name);

&str wird kurzzeitig ausgeliehen, um den String-Inhalt zu lesen, und &mut String wird ausgeliehen, um den Wert zu ändern. Sie können nicht gleichzeitig eine veränderbare Referenz und eine andere Referenz im selben Bereich verwenden.

Diese Einschränkung verhindert Situationen, in denen sich Werte während des Lesens ändern oder an zwei Stellen gleichzeitig geändert werden.

in Scheiben geschnitten

fn first_word(text: &str) -> &str {
    match text.find(' ') {
        Some(index) => &text[..index],
        None => text,
    }
}

Ein Slice ist ein Verweis auf einen zusammenhängenden Teil einer Zeichenfolge oder eines Arrays, ohne dass dieser Teil davon ist. Funktionen, die nicht den gesamten String benötigen, können sowohl String-Literale als auch String-Slices verwenden, indem sie &str empfangen.

Lebensdauer einer Referenz

Der Compiler stellt sicher, dass die Referenz das Original nicht überdauert. Wenn Sie versuchen, einen Verweis auf eine lokale Variable außerhalb einer Funktion zurückzugeben, wird diese nicht kompiliert, da das Original zuerst verschwindet.

Wenn ein Eigentumsfehler auftritt, sollten Sie zunächst entscheiden, wer der tatsächliche Eigentümer des Werts sein soll, anstatt ihn zunächst einfach zu klonen. Das Ausleihen ist eine Technik zur Vermeidung von Kopien und gleichzeitig ein Vertrag, der die Zugriffsrechte auf das Tippen einschränkt.