Vorteile von Rust

Einige Alleinstellungsmerkmale von Rust:

  • Compile time memory safety - whole classes of memory bugs are prevented at compile time

    • Keine nicht initialisierten (uninitialized) Variablen.
    • Keine Doppelbefreiungen (double-frees).
    • Keine Nachnutzung (use-after-free).
    • Keine NULL-Zeiger (null Pointer).
    • Keine vergessenen gesperrten Mutexe.
    • Keine Datenrennen (data races) zwischen Ausführungssträngen (threads).
    • Keine Invalidierung des Iterators.
  • No undefined runtime behavior - what a Rust statement does is never left unspecified

    • Der Array-Zugriff wird auf Grenzen geprüft.
    • Integer overflow is defined (panic or wrap-around).
  • Modern language features - as expressive and ergonomic as higher-level languages

    • Enums und Musterabgleich (pattern matching).
    • Generika.
    • Kein Overhead-FFI.
    • Nullkosten-Abstraktionen.
    • Gute Compiler-Fehler.
    • Eingebauter Paketmanager.
    • Eingebaute Unterstützung für Tests.
    • Hervorragende Unterstützung des Language Server Protokolls.

Speaker Notes

This slide should take about 3 minutes.

Do not spend much time here. All of these points will be covered in more depth later.

Frage den Kurs unbedingt, mit welchen Programmiersprachen sie Erfahrung haben. Abhängig von der Antwort kannst Du verschiedene Funktionen von Rust hervorheben:

  • Erfahrung mit C oder C++: Rust eliminiert eine ganze Klasse von Laufzeitfehlern (runtime Errors) über den Ausleihenprüfer (borrow checker). Du erhältst eine ähnliche Leistung wie in C und C++, aber hast keine Probleme mit der Speicherunsicherheit. Darüber hinaus erhältst Du eine moderne Sprache mit Konstrukten wie Mustervergleich (Pattern matching) und integriertes Abhängigkeitsmanagement (dependency management).

  • Experience with Java, Go, Python, JavaScript…: You get the same memory safety as in those languages, plus a similar high-level language feeling. In addition you get fast and predictable performance like C and C++ (no garbage collector) as well as access to low-level hardware (should you need it).