Skip to main content
swissICT Booster  |  M&F Academy  |  M&F Events   |  +41 44 747 44 44  | 
3 Minuten Lesezeit (523 Worte)

Robuste und fehlerfreie Softwareentwicklung mit Rust

Mit dem Ziel, uns die Besonderheiten und Unterschiede von Rust näherzubringen, verschaffte uns Rainer Stropek einen Überblick von den Basics über Konzepte wie Ownership und Borrowing zu Nebenläufigkeit mit Futures, async/await und Tokio.

Rainer Stropek ist ein erfahrener Fachmann im Bereich der Softwareentwicklung und seit 2008 als Mitbegründer und CEO der Firma "software architects" tätig. Bei "software architects" widmet man sich der Entwicklung der preisgekrönten SaaS-Lösung "time cockpit". Zusätzlich unterstützt das Unternehmen seine Kunden bei der Umstellung auf Cloud Computing und SaaS. Vor seiner aktuellen Tätigkeit gründete und leitete Stropek zwei IT-Beratungsfirmen, die sich auf Entwicklung und Beratung im Microsoft-Technologie-Stack spezialisierten. Durch sein umfangreiches Know-how und seine mitreissende Art ist er bei der M&F ein beliebter Referent.

What’s unique about Rust?

Für angehende Softwareingenieure, die bereits Erfahrung mit C, C++ und C# haben, ist Rust eine äusserst interessante Programmiersprache. Rust bietet eine Kombination aus Leistungsfähigkeit, Sicherheit und einfacher Syntax, die es ermöglicht, robuste und fehlerfreie Software zu entwickeln. Im Vergleich zu C und C++ verfügt Rust über Mechanismen wie den Ownership-Begriff und die Borrowing-Regeln, die Speicherfehler wie Nullzeiger-Dereferenzierungen und Pufferüberläufe vermeiden helfen. Darüber hinaus bietet Rust eine effiziente Unterstützung für Nebenläufigkeit.

The basics

In Rust sind Variablen standardmässig immutable. Das Keyword "mut" ermöglicht Mutationen!

Shadowing: Durch erneutes Deklarieren von Variablen können neue "bindings" erstellt werden.

Scopes: Variablen sind "block-scoped" und die Werte werden "gedropt" sobald sie den Scope verlassen.

Es gibt keine "statements", nur "expressions". Ohne Semikolon werden die Werte zurückgegeben, ohne "return" statement.

Besonderheiten bei den Datentypen: Arrays haben fixe Grösse und sind auf dem Stack gespeichert. Vektoren können wachsen und schrumpfen, und die Werte sind auf dem Heap gespeichert.

Slices sind temporäre "views" von Arrays und Vektoren.

Makros! Makros sind mit einem Ausrufezeichen gekennzeichnet und werden auch in Standard-Libraries verwenden, siehe die Instanzierung des Vektors im vorherigen Code-Snippet mit einem Makro.

Structs. Es gibt drei verschieden Struct-Typen.

Mit "impl" blocks können structs mit Funktionen erweitert werden.

Ownership und Borrowing

Ownership und Borrowing sind grundlegende Konzepte in Rust, die zur Erstellung von sicherem und effizientem Code beitragen. Das Konzept der Ownership bedeutet, dass jedes Datenobjekt genau einen "Owner" hat. Wenn der Owner den Scope verlässt, wird die Ressource automatisch freigegeben. Dadurch werden Laufzeitfehler wie Speicherlecks oder Dateninkonsistenzen vermieden. Um jedoch flexibel auf Daten zuzugreifen, ohne sie zu besitzen, kommt das Konzept des "Borrowing" zum Einsatz. Borrowing ermöglicht es, temporäre Verweise auf Daten zu erstellen, ohne die "Ownership" zu übertragen. Alternativ kann der Owner die Ownership auch von sich aus transferieren – was in Rust "Moving" genannt wird.

Moving vs. Borrow. Ohne Borrow verliert main die Ownership über die Person, und kann diese beim zweiten Aufruf nicht noch ein zweites Mal transferieren.

Variante Shared Borrow. Die Funktion print_person darf die Person lesen, aber nicht mutieren!

Mit einem Mutable Borrow darf die Person auch mutiert werden.

The rest

Neben den Basics hat Rainer Stropek im Workshop auch weitere Themen aufgegriffen, die hier den Rahmen sprengen würden. Erwähnenswert sind diese Konzepte allerdings auf jeden Fall:

  • Cargo – The Rust Package Manager
  • Elegantes Errorhandling mit Result-Type
  • Traits – "The meat of Rust", ähnlich zu Interfaces
  • Generics und Traitbounds
  • Iterators
  • Nebenläufigkeit mit Futures, async/await und Tokio
0
Vom Maschinenbau zur Softwareentwicklung
Eine Entscheidung voller Möglichkeiten

Ähnliche Beiträge

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Sonntag, 28. April 2024

Sicherheitscode (Captcha)