Rust dans le portfolio : 5 projets qui impressionneront n'importe quel employeur

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi Rust est votre atout dans le portfolio

\n\n

Si vous lisez cet article, vous savez probablement déjà que Rust n'est pas simplement un langage à la mode de plus. C'est une technologie adorée chez FAANG et dans les startups hype. Mais une chose est de dire dans votre CV « Je connais Rust », et une autre est de montrer un projet fonctionnel. Sans portfolio, même le code le plus génial reste juste du texte dans un éditeur de texte.

\n\n

Dans cet article, nous n'allons pas discuter de la syntaxe ni vous apprendre les bases. Nous irons plus loin : je vais vous montrer 5 idées réelles de projets qui répondent aux besoins du marché et qui pousseront le recruteur à cliquer sur votre CV. Chaque projet n'est pas simplement une « todo list », mais un outil complet que vous pourrez montrer lors d'un entretien ou publier sur GitHub.

\n\n

Bonus : j'ai ajouté des exemples de code pour que vous puissiez commencer immédiatement. C'est parti !

\n\n

Projet n°1 : Utilitaire CLI pour l'analyse de logs

\n\n

Le moyen le plus rapide d'entrer dans le monde de Rust est d'écrire quelque chose d'utile pour la ligne de commande. Les utilitaires CLI sont le pain quotidien du développeur Rust. Ils sont rapides, sûrs et parfaits pour démontrer des compétences en std::fs, clap et la gestion des erreurs.

\n\n

Que fait ce projet ?

\n

L'utilitaire log-analyzer lit un fichier texte contenant des logs (par exemple, de Nginx ou de votre application) et fournit des statistiques : nombre d'erreurs, adresses IP les plus fréquentes, horodatages. Le tout avec un affichage coloré dans le terminal.

\n\n

Pourquoi est-ce génial pour le portfolio ?

\n
    \n
  • Travail avec le système de fichiers et les flux
  • \n
  • Analyse de chaînes avec des expressions régulières ou nom
  • \n
  • Arguments de ligne de commande (crate clap)
  • \n
  • Affichage en couleur (crate colored)
  • \n
\n\n

Exemple de code

\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("Impossible d'ouvrir le fichier");\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!("Nombre d'erreurs trouvées : {}", error_count);\n}
\n\n

Conseil : Ajoutez la gestion des arguments via clap et le support du format JSON. Cela montrera que vous savez travailler avec la sérialisation.

\n\n

Projet n°2 : Serveur web avec Actix-web et API REST

\n\n

Rust n'est pas seulement pour la programmation système. Le développement web en Rust gagne en popularité, et actix-web est l'un des frameworks les plus rapides au monde. Créez une API REST simple pour gérer des tâches (CRUD). C'est un classique, mais en Rust, il semble frais.

\n\n

Que faut-il implémenter ?

\n
    \n
  • Endpoints : GET, POST, PUT, DELETE pour l'entité "Task"
  • \n
  • Stockage des données en mémoire (avec possibilité d'extension vers une base de données)
  • \n
  • Validation des données entrantes via serde
  • \n
  • Gestion des erreurs et retour des codes HTTP corrects
  • \n
\n\n

Pourquoi cela ajoutera du poids à votre portfolio ?

\n

Vous montrerez que vous comprenez comment construire des API modernes. Les employeurs recherchent des personnes capables d'écrire non seulement un script, mais aussi une partie serveur. De plus, actix-web est un excellent moyen de démontrer la connaissance de l'asynchronisme et du multithreading.

\n\n

Code pour démarrer

\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

Book Recommendations