Rust Grundlagen auf dem PC · Teil 13TutorialEinsteiger

Rust

Rust Grundlagen 13: Borrowing und Referenzen

Daten ausleihen statt kopieren. Verständliche Rust-Lektion mit Beispielen, Übung und Musterlösung.

Kapitel: Rust verstehen

Veröffentlicht am

Teil 13: Borrowing und Referenzen

Lernziel: Daten ausleihen statt kopieren.

Voraussetzungen: Die vorherigen Lektionen, insbesondere Teil 12.

Worum geht es?

Mit & kannst du auf Daten zugreifen, ohne ihren Besitz zu übernehmen. Das nennt Rust Borrowing.

Schritt für Schritt

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

fn main() {
    let name = String::from("Neptune 4");
    zeige_name(&name);
    println!("Weiterhin vorhanden: {name}");
}

Die Funktion erhält eine unveränderliche Referenz auf die String-Daten. Für Veränderungen brauchst du eine veränderliche Referenz:

fn ergaenze(name: &mut String) {
    name.push_str(" Plus");
}

let mut modell = String::from("Neptune 4");
ergaenze(&mut modell);

Wichtigste Regel

Während eine veränderliche Referenz auf denselben Wert aktiv ist, darf es keine konkurrierende Verwendung geben, die die Referenzregeln verletzt. Rust prüft dies beim Kompilieren.

Slices

&str ist ein Slice, also eine Ansicht auf Textdaten. Für Arrays und Vektoren gibt es &[T], beispielsweise &[f64]. Bei Text-Slices müssen Grenzen gültige UTF-8-Zeichengrenzen sein.

Selbst ausprobieren

Schreibe eine Funktion laenge(text: &str) -> usize, die die Anzahl der Unicode-Zeichen zurückgibt, ohne den String zu übernehmen.

Musterlösung anzeigen
fn laenge(text: &str) -> usize {
    text.chars().count()
}
fn main() {
    let name = String::from("Drucker A");
    println!("{} Zeichen", laenge(&name));
    println!("{name}");
}

Das solltest du mitnehmen

  • Daten ausleihen statt kopieren.
  • Nutze cargo run für das Ausführen und cargo check für eine schnelle Fehlerprüfung (ab Teil 4).
  • Experimentiere mit veränderten Werten und beobachte die Compilermeldungen.

Weiterführende Quellen


← Vorheriger Teil | Kursübersicht | Nächster Teil →