Rust im Portfolio: 5 Projekte, die jeden Arbeitgeber beeindrucken

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

Warum Rust Ihr Trumpf im Portfolio ist

\n\n

Wenn Sie diesen Artikel lesen, wissen Sie wahrscheinlich bereits, dass Rust nicht nur eine weitere modische Sprache ist. Es ist eine Technologie, die bei FAANG und angesagten Startups geliebt wird. Aber es ist eine Sache, im Lebenslauf „Rust-Kenntnisse“ zu sagen, und eine ganz andere, ein funktionierendes Projekt zu zeigen. Ohne Portfolio bleibt selbst genialer Code nur Text in einem Texteditor.

\n\n

In diesem Artikel werden wir nicht über Syntax diskutieren oder Ihnen die Grundlagen beibringen. Wir gehen weiter: Ich zeige Ihnen 5 echte Projektideen, die die Marktbedürfnisse abdecken und den Recruiter dazu bringen, auf Ihren Lebenslauf zu klicken. Jedes Projekt ist nicht nur eine einfache „To-do-Liste“, sondern ein vollwertiges Werkzeug, das Sie im Vorstellungsgespräch vorzeigen oder auf GitHub veröffentlichen können.

\n\n

Bonus: Ich habe Codebeispiele hinzugefügt, damit Sie sofort loslegen können. Los geht's!

\n\n

Projekt Nr. 1: CLI-Tool zur Log-Analyse

\n\n

Der schnellste Weg, in die Welt von Rust einzusteigen, ist, etwas Nützliches für die Kommandozeile zu schreiben. CLI-Tools sind das tägliche Brot für Rust-Entwickler. Sie sind schnell, sicher und ideal, um Fähigkeiten im Umgang mit std::fs, clap und der Fehlerbehandlung zu demonstrieren.

\n\n

Was macht dieses Projekt?

\n

Das Tool log-analyzer liest eine Textdatei mit Logs (z. B. von Nginx oder Ihrer Anwendung) und gibt Statistiken aus: Anzahl der Fehler, häufigste IP-Adressen, Zeitstempel. All dies mit farbiger Ausgabe im Terminal.

\n\n

Warum ist das cool fürs Portfolio?

\n
    \n
  • Arbeit mit dem Dateisystem und Streams
  • \n
  • Parsen von Zeilen mit regulären Ausdrücken oder nom
  • \n
  • Kommandozeilenargumente (Crate clap)
  • \n
  • Farbige Ausgabe (Crate colored)
  • \n
\n\n

Beispielcode

\n
use clap::Parser;\nuse std::fs::File;\nuse std::io::{BufRead, BufReader};\n\n#[derive(Parser)]\n#[command(name = "log-analyzer")]\nstruct Args {\n    #[arg(short, long)]\n    file: String,\n}\n\nfn main() {\n    let args = Args::parse();\n    let file = File::open(&args.file).expect("Datei konnte nicht geöffnet werden");\n    let reader = BufReader::new(file);\n\n    let mut error_count = 0;\n    for line in reader.lines() {\n        let line = line.unwrap();\n        if line.contains("ERROR") || line.contains("error") {\n            error_count += 1;\n        }\n    }\n\n    println!("Gefundene Fehler: {}", error_count);\n}
\n\n

Tipp: Fügen Sie die Argumentverarbeitung über clap und Unterstützung für das JSON-Format hinzu. Das zeigt, dass Sie mit Serialisierung umgehen können.

\n\n

Projekt Nr. 2: Webserver mit Actix-web und REST API

\n\n

Rust ist nicht nur für Systemprogrammierung. Die Webentwicklung mit Rust nimmt Fahrt auf, und actix-web ist eines der schnellsten Frameworks der Welt. Erstellen Sie eine einfache REST-API zur Aufgabenverwaltung (CRUD). Das ist ein Klassiker, aber in Rust wirkt es frisch.

\n\n

Was muss umgesetzt werden?

\n
    \n
  • Endpunkte: GET, POST, PUT, DELETE für die Entität "Task"
  • \n
  • Datenspeicherung im Arbeitsspeicher (mit Erweiterbarkeit auf eine Datenbank)
  • \n
  • Validierung eingehender Daten mit serde
  • \n
  • Fehlerbehandlung und Rückgabe korrekter HTTP-Statuscodes
  • \n
\n\n

Warum verleiht das Ihrem Portfolio Gewicht?

\n

Sie zeigen, dass Sie verstehen, wie man moderne APIs erstellt. Arbeitgeber suchen Leute, die nicht nur ein Skript, sondern auch einen Serverteil schreiben können. Außerdem ist actix-web eine hervorragende Möglichkeit, Kenntnisse in Asynchronität und Multithreading zu demonstrieren.

\n\n

Code für den Start

\n
use actix_web::{web, App, HttpServer, Responder, HttpResponse};\nuse serde::{Deserialize, Serialize};\nuse std::sync::Mutex;\n\n#[derive(Serialize, Deserialize, Clone)]\nstruct Task {\n    id: u32,\n    title: String,\n    completed: bool,\n}\n\nstruct AppState {\n    tasks: Mutex<Vec<Task>>,\n}\n\nasync fn get_tasks(data: web::Data<AppState>)                

Blogs

Buchempfehlungen