Ferris Talk #13: Rust-Web-APIs und Mocking mit Axum
Seite 4: Typsicherheit mit Tücken
Axum 0.6 hat das State Handling deutlich zum Besseren verändert. Dass der Compiler die Typsicherheit bezüglich Shared State beim Übersetzen prüft, verringert die Laufzeitfehler weiter. Der Schritt passt gut ins generelle Bild von Rust, das für Stabilität und Sicherheit bekannt ist.
Typsicherheit hat aber ihre Tücken, wenn es darum geht, Schichten zu entkoppeln. Man kann nicht wie beispielsweise in JavaScript einfach Mock-Objekte bereitstellen, die mehr oder weniger willkürlich die gleichen Methoden anbieten wie die eigentliche Implementierung der jeweiligen Strukturen, und sich darauf verlassen, dass die Laufzeitumgebung damit umgehen kann. Typsicherheit erfordert den Einsatz von Traits, die aber für sich noch nicht zum Erfolg führen: Ein dynamisches Binding über Rust Trait Objects ist erforderlich, damit Axum mit der Typsicherheit zufrieden ist und man mit Mocking-Frameworks wie mockall Mock-Objekte generieren kann.
Wer neu in Rust ist, findet das Thema Trait Objects oft etwas abschreckend. Die richtige Syntax ist angesichts der komplexen Typkonstrukte mit dyn
nicht einfach. Asynchrone Programmierung tut das ihre dazu, da für Traits mit asynchronen Methoden besondere Vorkehrungen erforderlich sind. Der gezeigte Beispielcode soll beim Einstieg helfen, indem er Schritt für Schritt die Schichten der API entkoppelt und dabei den Einsatz der Traits zeigt.
Rainer Stropek
ist Softwareentwickler, Trainer, Autor und Vortragender im Microsoft-Umfeld und seit über 25 Jahren als Unternehmer in der IT-Industrie tätig.
Er gründete und führte in dieser Zeit mehrere IT-Dienstleistungsunternehmen. Neben der Tätigkeit als Trainer und Berater in seiner Firma software architects entwickelt er mit seinem Team die preisgekrönte Software time cockpit. Rainer hat Abschlüsse der höheren technischen Schule für Informatik Leonding (AT) sowie der University of Derby (UK). Er ist Autor mehrerer Fachbücher und Artikel in Magazinen im Umfeld von Microsoft .NET und C#, Azure, Go und Rust. Seine technischen Schwerpunkte sind Cloud Computing, die Entwicklung verteilter Systeme sowie Datenbanksysteme.
Regelmäßig tritt er als Speaker und Trainer auf namhaften Konferenzen in Europa und den USA auf. 2010 wurde er von Microsoft zu einem der ersten MVPs (Most Valuable Professionals) für die Azure-Plattform ernannt. Seit 2015 ist er Microsoft Regional Director. 2016 hat er zudem den MVP Award für Visual Studio und Developer Technologies erhalten.
(rme)