Zurück zur Übersicht

Begriff

Borrow Checker

Programming Languages Rust S4
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Der Türsteher von Rust. In anderen Sprachen (C++) kannst du Speicher freigeben (free), aber noch eine Referenz darauf behalten ("Dangling Pointer"). Wenn du die Referenz später nutzt -> Crash oder Hack. Der Borrow Checker ist ein Teil des Rust-Compilers, der deinen Code analysiert. Er prüft jede Referenz:

  1. Lebt der Besitzer (Owner) noch?
    Musterantwort: Beginne mit dem konkreten Fall, prüfe die Fakten und erkläre den Begriff daran. Für diesen Abschnitt gilt: Du merkst ihn nur, wenn er meckert. Typischer Fehler: let r; { let x = 5; r = &x; } println!("{}", r); Fehler: x stirbt am Ende des Blocks {}. r würde auf toten Speicher zeigen. Der Borrow Checker sagt: "Borrowed value does not live long enough." Lösung: Struktur des Codes ändern, damit x länger lebt.
  2. Gibt es gleichzeitig jemanden, der schreibt? Wenn er auch nur den Hauch eines Zweifels hat, lehnt er den Code ab. Er ist berüchtigt dafür, Anfänger in den Wahnsinn zu treiben ("Borrow Checker Errors"). Aber er rettet dich vor Bugs, die du sonst erst nach Wochen in Produktion finden würdest.

Merksatz: Die Komponente des Rust-Compilers, die zur Kompilierzeit die Regeln des Ausleihens (Borrowing) und der Lebensdauer (Lifetimes) von Referenzen erzwingt, um Speichersicherheit und Datenwettlauffreiheit zu garantieren.


Quick-Check

  1. Laufzeitkosten?
    Null. Der Borrow Checker läuft nur beim Kompilieren. Das fertige Binary enthält keine Checks (und keinen GC).
  2. Data Races?
    Er verhindert Data Races komplett. Er erlaubt &mut T (Schreiben) nur, wenn kein anderer &T (Lesen) hat. "Aliasing XOR Mutation".
  3. Interior Mutability?
    Manchmal muss man die Regeln brechen (z. B. Reference Counting). Typen wie RefCell oder Mutex prüfen die Regeln zur Laufzeit (Runtime Check) statt zur Compile-Zeit.