Was ist Clap und wozu wird es benötigt?
\n\nClap (Command Line Argument Parser) ist eine leistungsstarke, schnelle und benutzerfreundliche Bibliothek zum Parsen von Kommandozeilenargumenten in der Sprache Rust. Sie ermöglicht Entwicklern, einfach zu definieren, welche Argumente, Flags, Optionen und Unterbefehle ihre Anwendung akzeptieren soll, generiert automatisch Hilfe (--help), überprüft Datentypen und verarbeitet Eingabefehler.
Wozu wird Clap benötigt? Anstatt manuell std::env::args() zu parsen und Dutzende von Codezeilen für die Validierung zu schreiben, erledigt Clap die gesamte Arbeit für Sie. Sie beschreiben einfach die Struktur Ihrer CLI, und die Bibliothek übernimmt das Parsen, die Generierung von Fehlermeldungen und die Formatierung von Hinweisen. Clap unterstützt:
- \n
- Positionsargumente (obligatorisch und optional). \n
- Benannte Optionen (Flags) mit kurzen und langen Namen. \n
- Unterbefehle (wie in
git commit). \n - Auto-Vervollständigung für Shells (bash, zsh, fish, PowerShell). \n
- Wertvalidierung, Standardwerte, Mehrfachwerte und vieles mehr. \n
Clap ist der De-facto-Standard für die Erstellung von CLI-Anwendungen im Rust-Ökosystem. Es wird in bekannten Projekten wie cargo, ripgrep (rg), fd und vielen anderen verwendet.
Installation
\n\nClap ist eine Bibliothek für Rust und wird daher über den Paketmanager cargo installiert. Fügen Sie die folgende Zeile zu Ihrer Cargo.toml-Datei hinzu:
[dependencies]\nclap = { version = "4.5", features = ["derive"] }\n\nWir empfehlen die Verwendung von derive-Makros (Feature derive), da dies die modernste und bequemste Art ist, mit Clap zu arbeiten. Wenn Sie nur die grundlegende Funktionalität ohne derive benötigen, können Sie schreiben:
[dependencies]\nclap = "4.5"\n\nFühren Sie nach dem Hinzufügen der Abhängigkeit den Befehl cargo build aus, um die Bibliothek herunterzuladen und zu kompilieren.
Schnellstart mit einem Codebeispiel
\n\nLassen Sie uns eine einfache Anwendung erstellen, die einen Benutzernamen und ein optionales Begrüßungs-Flag akzeptiert. Erstellen Sie ein neues Projekt:
\n\ncargo new hello_clap\ncd hello_clap\n\nErsetzen Sie den Inhalt von src/main.rs durch den folgenden Code:
use clap::Parser;\n\n/// Einfaches Programm zur Begrüßung\n#[derive(Parser)]\n#[command(name = "greeter")]\n#[command(about = "Begrüßt den Benutzer", long_about = None)]\nstruct Cli {\n /// Name des Benutzers\n name: String,\n\n /// Anzahl der Wiederholungen der Begrüßung\n #[arg(short = 'c', long = "count", default_value_t = 1)]\n count: u8,\n}\n\nfn main() {\n let cli = Cli::parse();\n\n for _ in 0..cli.count {\n println!("Hallo, {}!", cli.name);\n }\n}\n\nStarten Sie nun das Programm:
\n\ncargo run -- Welt\n# Ausgabe: Hallo, Welt!\n\ncargo run -- Welt -c 3\n# Ausgabe:\n# Hallo, Welt!\n# Hallo, Welt!\n# Hallo, Welt!\n\ncargo run -- --help\n# Ausgabe der Hilfe\n\nWie Sie sehen, hat Clap automatisch die Hilfe generiert, die Argumente verarbeitet und eine Typüberprüfung durchgeführt (wenn Sie -c keine Zahl übergeben, wird ein Fehler ausgegeben).
Wichtige Methoden und Funktionen von Clap
\n\nBetrachten wir die wichtigsten Methoden und Attribute, die Clap bereitstellt. Wir verwenden den Ansatz mit derive-Makros, da dieser am weitesten verbreitet ist.
\n\n1. #[derive(Parser)]
\nWas es tut: Verwandelt Ihre Struktur in einen Kommandozeilen-Parser. Dies ist das Hauptmakro, mit dem alles beginnt. Es implementiert automatisch das Parser-Trait für Ihre Struktur.
Parameter: Attribute der Struktur (#[command(...)]) und der Felder (#[arg(...)]).
Beispiel:
\nuse clap::Parser;\n\n#[derive(Parser)]\n#[command(name = "myapp")]\nstruct C Auch in der Bibliothek
Arbeit mit S3 und Cloud-Speichern in Java: AWS SDK und MinIO
SMS-Versand mit Java: Überblick und Beispiele zur Nutzung von API-Bibliotheken (Twilio, Nexmo)
Caching in Go (Golang): Redis, Gruppen- und In-Memory-Caching
Kotlin Standardbibliothek: vollständiger Überblick und Beispiele