Rust im Jahr 2025: Neue Möglichkeiten in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Rust im Jahr 2025: Was gibt es Neues? Praktische Möglichkeiten



Das Jahr 2025 war ein Meilenstein für das Rust-Ökosystem. Die Sprache, die bereits die Herzen von Systemprogrammierern, Webentwicklern und Entwicklern von Kommandozeilen-Tools erobert hat, erhielt eine Reihe lang erwarteter Updates. Während in den Jahren 2023-2024 der Fokus auf der Stabilisierung und Verbesserung der Werkzeuge lag, verlagerte sich der Schwerpunkt 2025 auf die radikale Vereinfachung des Schreibens komplexen Codes und die Steigerung der Leistung ohne Einbußen bei der Sicherheit.



In diesem Artikel werden wir drei wichtige Neuerungen behandeln, die bereits in der stabilen Version von Rust 2025 verfügbar sind, und sie anhand konkreter Beispiele zeigen. Wenn Sie die Entwicklung von Rust verfolgen oder gerade erst damit beginnen, hilft Ihnen dieses Material, schnell auf den neuesten Stand zu kommen.



1. Asynchrone Iteratoren: async gen und async for



Eines der heißesten Themen im Jahr 2025 war die Stabilisierung asynchroner Generatoren und Iteratoren. Früher erforderte das Schreiben eines asynchronen Iterators die manuelle Implementierung des Stream-Traits oder die Verwendung externer Crates. Jetzt ist alles einfacher und eleganter geworden.



Die wichtigste Neuerung ist das Schlüsselwort async in Kombination mit gen und die Möglichkeit, async for in Schleifen zu verwenden. Dies ermöglicht das Schreiben von Code, der asynchron Datenfolgen erzeugt und verbraucht, ohne den Ausführungsfluss zu blockieren.



Beispiel: Asynchroner Generator von Fibonacci-Zahlen



use std::time::Duration;use tokio::time::sleep;

// Asynchroner Generator, der Fibonacci-Zahlen mit Verzögerung "ausgibt"async fn async_fibonacci(limit: u32) -> impl AsyncIterator<Item = u64> { async gen { let (mut a, mut b) = (0, 1); for _ in 0..limit { sleep(Duration::from_millis(100)).await; // Simulation asynchroner Arbeit yield b; // Schlüsselwort yield let next = a + b; a = b; b = next; } }}

#[tokio::main]async fn main() { println!("Asynchrone Fibonacci-Zahlen (erste 10):"); // Verwenden von async for zum Verbrauchen async for number in async_fibonacci(10) { println!("Erhalten: {}", number); } println!("Fertig!");}


Was bringt das in der Praxis?

  • Vereinfachung des Codes: Keine Notwendigkeit mehr, komplexe Kombinatoren aus der futures-Crate zu schreiben.
  • Lesbarkeit: Der Code sieht aus wie ein normaler synchroner Generator, arbeitet aber asynchron.
  • Leistung: Der Compiler optimiert solche Konstruktionen und reduziert den Overhead auf ein Minimum.

Dies ist besonders nützlich für die Verarbeitung von Datenströmen aus dem Netzwerk, das Lesen großer Dateien oder die Arbeit mit WebSocket-Verbindungen.



2. Verbesserter Borrow Checker: Polonius stabilisiert



Der Borrow Checker ist die "Seele" von Rust, verantwortlich für die Speichersicherheit ohne Garbage Collector. Allerdings stießen Anfänger (und auch erfahrene Entwickler) oft auf Situationen, in denen der Compiler absolut sicheren Code ablehnte. Im Jahr 2025 wurde das Polonius-Ausleihemodell endlich Teil des stabilen Compilers.



Polonius verwendet eine genauere Datenflussanalyse, die es dem Compiler ermöglicht, komplexere Muster bei der Arbeit mit Referenzen zu "verstehen".



Beispiel: Das Problem der "zwei mutablen Ausleihen"

Früher ließ sich dieser Code nicht kompilieren:



fn push_and_pop(vec: &mut Vec<i32>) -> &i32 {    vec.push(1);    // Fehler: Man kann keine mutable Referenz (push) und dann eine immutable (pop) nehmen    let last = vec.last().unwrap();    last}


In Rust 2025 mit Polonius funktioniert das! Der Compiler erkennt, dass die mutable Referenz nach push nicht mehr verwendet wird, und erlaubt die immutable Referenz auf das letzte Element. So wird

Blogs

Buchempfehlungen