Qu'est-ce que Clap et pourquoi en a-t-on besoin ?
Clap (Command Line Argument Parser) est l'un des frameworks les plus populaires et les plus puissants pour créer des interfaces en ligne de commande (CLI) en langage Rust. Il permet aux développeurs de décrire rapidement et facilement les arguments, les drapeaux, les sous-commandes et de générer automatiquement l'aide. Clap est utilisé dans des projets célèbres tels que ripgrep, fd et bat. Grâce au typage strict de Rust et aux macros, Clap assure la sécurité à la compilation et élimine l'analyse manuelle des chaînes.
Installation
Ajoutez la dépendance dans Cargo.toml :
[dependencies]clap = { version = "4.5", features = ["derive"] }Le drapeau derive active le support des macros procédurales — c'est la manière la plus pratique d'utiliser Clap.
Fonctionnalités principales
- Analyse déclarative — description des arguments via des structures et des attributs.
- Génération automatique de l'aide (
--help). - Support des sous-commandes (par exemple,
git clone,git push). - Validation des types — nombres, chaînes, drapeaux, énumérations.
- Autocomplétion Bash/Zsh/Fish.
- Affichage coloré des erreurs.
Exemple de code en Rust
Créons une calculatrice simple avec deux modes : addition et soustraction.
use clap::Parser;
#[derive(Parser)]#[command(name = "calc", version = "1.0", about = "Calculatrice simple")]struct Cli { #[command(subcommand)] command: Commands,}
#[derive(clap::Subcommand)]enum Commands { /// Additionner deux nombres Add { a: f64, b: f64 }, /// Soustraire b de a Sub { a: f64, b: f64 },}
fn main() { let cli = Cli::parse(); match cli.command { Commands::Add { a, b } => println!("Résultat : {}", a + b), Commands::Sub { a, b } => println!("Résultat : {}", a - b), }}Exécution : cargo run -- add 10 5 affichera Résultat : 15.
Quand l'utiliser
Clap est idéal pour tous les outils CLI en Rust — des utilitaires simples aux applications complexes à plusieurs niveaux. Utilisez-le si vous avez besoin d'un analyseur d'arguments fiable, documenté et rapide avec un minimum de code. Grâce aux macros derive, vous obtenez un typage strict et une génération automatique de l'aide sans code passe-partout.
Si votre projet nécessite des performances élevées (par exemple, le traitement de logs en temps réel) ou une hiérarchie de commandes complexe, Clap est le meilleur choix. Il supporte également les validateurs personnalisés et l'analyse des variables d'environnement.
Conclusion
Clap est la norme de facto pour les CLI dans l'écosystème Rust. Il combine la commodité des bibliothèques Python (argparse, click) avec les performances et la sécurité de Rust. Commencez par cargo add clap --features derive et créez votre première CLI en 5 minutes.
Aussi dans la bibliothèque
Travailler avec Excel en JavaScript (Node.js) : bibliothèques et exemples
Travailler avec XML en C++ : bibliothèques PugiXML et RapidXML
Files d'attente de tâches en Java : Aperçu et implémentation avec java.util.concurrent
Travailler avec CSV en PHP : bibliothèque SplFileObject et fonctions intégrées