Article
Von Go zu Rust: Ein praktischer Migrationsleitfaden für Backend-Entwickler
Warum dieser Vergleich relevant ist
Go zu Rust ist unter Migrationen ein Sonderfall. Es geht nicht um Performance oder Typsicherheit – Go liefert beides bereits. Die Diskussion dreht sich um Korrektheitsgarantien, Runtime-Tradeoffs und Entwickler-Ergonomie. Matthias Endler, der diesen Leitfaden verfasst hat, arbeitet als Rust-Berater und kennt beide Seiten. Er räumt ein, dass er Go für “schlecht gestaltet” hält, aber auch, dass Erfolg zählt. Mit 17 bis 19 Prozent Marktanteil unter Entwicklern (JetBrains-Umfrage) ist Go offensichtlich eine funktionierende Sprache. Rust wächst stetig, liegt aber noch bei etwa 11 Prozent.
Die Toolchain im Vergleich
Go hat eine der saubersten Toolchains der Industrie – “Batteries included” war Go’s Beitrag, bevor Rust dasselbe Modell übernahm. Die Entsprechungen sind direkt: go build wird zu cargo build, go run zu cargo run, gofmt zu cargo fmt. Rust bietet mit cargo clippy sogar einen integrierten Linter, den Go nur mit externen Tools erreicht. Der größte Unterschied liegt in der Fehlerbehandlung: Go nutzt explizite Returns, Rust nutzt Result und ?. Beide erzwingen Fehlerbehandlung, aber Rust macht es konsequenter.
Was der Borrow Checker wirklich bringt
Go’s Garbage Collector ist ein Segen für schnell wachsende Startups: Man schreibt Code, und er läuft. Aber er verbirgt auch Probleme – Memory Leaks durch vergessene Goroutines, Race Conditions durch ungeschützte Shared State. Rust’s Borrow Checker drängt diese Probleme zur Compile-Zeit nach vorn. Der Preis: Man kämpft länger mit dem Compiler, aber wenn er durchläuft, läuft das Programm oft korrekt. Das gilt besonders für Concurrent Code: In Go sind Data Races zur Laufzeit möglich, in Rust sind sie Compile-Fehler.
Wann Go bleiben und wann Rust wählen
Für Teams, die schnell Features shippen müssen, ist Go oft die bessere Wahl. Die Onboarding-Zeit ist kürzer, das Ökosystem ist stabiler, die Fehlermeldungen sind verständlicher. Rust lohnt sich, wenn Korrektheit wichtiger ist als Geschwindigkeit – bei Embedded-Systemen, Krypto-Code, Safety-kritischen Anwendungen. Der Leitfaden empfiehlt, Rust nicht für alles zu migrieren, sondern inkrementell: Neue Services in Rust, alte in Go, Kommunikation über gRPC oder HTTP. Das reduziert das Risiko und lässt Teams in beiden Sprachen Erfahrungen sammeln.
Die ehrliche Bewertung
Der Autor empfiehlt, seinen Artikel mit dem Gegenstück zu lesen: “Just Fucking Use Go” von Blain Smith. Beide Perspektiven zu halten ist mehr wert als jede einzelne. Go ist nicht “das bessere Rust” und Rust ist nicht “das bessere Go”. Sie repräsentieren unterschiedliche Philosophien: Go optimiert für Einfachheit im Sinne von “leicht zu lernen”, Rust optimiert für Einfachheit im Sinne von “das System macht, was es soll”. Die Wahl hängt davon ab, welches Problem man löst.
Originalartikel: Corrode.dev - Go to Rust Migration