Benefits of 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.
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).

  • Erfahrung mit Java, Go, Python, JavaScript
: Du erhĂ€ltst die gleiche Speichersicherheit wie in diesen Sprachen, dazu ein Ă€hnlich hohes SprachgefĂŒhl. ZusĂ€tzlich erhĂ€ltst Du eine schnelle und vorhersehbare Leistung wie in C und C++ (keine Speicherbereinigung (garbage collector)) sowie Zugriff auf Low-Level-Hardware (falls benötigt).