Validierung und Hilfe
Ausgereifte CLIs
Validierung und Hilfe ist eine kostenlose Learn Rust Coding-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn Rust Coding-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.
Ihre CLI optimieren
Eine gute CLI validiert Eingaben frühzeitig und bietet eine klare Hilfe. clap unterstützt beides mit Attributen und Value-Parsern.
- Weisen Sie ungültige Werte mit verständlichen Meldungen zurück
- Dokumentieren Sie jedes Argument
Wertebereiche
Beschränken Sie ein numerisches Argument mit value_parser auf einen Wertebereich. Eingaben außerhalb des Bereichs werden automatisch zurückgewiesen.
use clap::Parser;
#[derive(Parser)]
struct Cli {
#[arg(long, value_parser = clap::value_parser!(u16).range(1..=65535))]
port: u16,
}Aufgezählte Auswahlmöglichkeiten
Verwenden Sie #[derive(ValueEnum)], um ein Argument auf eine festgelegte Menge von Zeichenketten zu beschränken.
use clap::{Parser, ValueEnum};
#[derive(Clone, ValueEnum)]
enum Mode { Fast, Safe }
#[derive(Parser)]
struct Cli {
#[arg(long, value_enum)]
mode: Mode,
}Benutzerdefinierte Validierungsfunktion
Übergeben Sie an value_parser eine Funktion, die Result zurückgibt. clap wandelt ein Err in einen Verwendungsfehler um.
fn parse_even(s: &str) -> Result<u32, String> {
let n: u32 = s.parse().map_err(|_| "not a number".to_string())?;
if n % 2 == 0 { Ok(n) } else { Err("must be even".to_string()) }
}Validierungslogik ausprobieren
Die Validierungsfunktion ist gewöhnliches Rust. Führen Sie sie aus, um zu sehen, wie eine Prüfung auf gerade und ungerade Zahlen Ok oder Err zurückgibt.
fn parse_even(s: &str) -> Result<u32, String> {
let n: u32 = s.parse().map_err(|_| "not a number".to_string())?;
if n % 2 == 0 { Ok(n) } else { Err("must be even".to_string()) }
}
fn main() {
println!("{:?}", parse_even("4"));
println!("{:?}", parse_even("7"));
}Erforderliche Gruppen und Konflikte
Drücken Sie Beziehungen zwischen Argumenten aus. conflicts_with verhindert, dass zwei inkompatible Flags gemeinsam verwendet werden.
use clap::Parser;
#[derive(Parser)]
struct Cli {
#[arg(long)]
quiet: bool,
#[arg(long, conflicts_with = "quiet")]
verbose: bool,
}Hilfetext pro Feld
Ein Dokumentationskommentar über einem Feld wird zu seinem Hilfetext. Dies ist die idiomatische Art, Argumente zu dokumentieren.
use clap::Parser;
#[derive(Parser)]
struct Cli {
/// The file to process
input: String,
}Lange Hilfe und kurze Hilfe
clap zeigt für -h eine kurze Zusammenfassung und für --help den vollständigen Text. Teilen Sie beides bei Bedarf mit #[arg(short_help, long_help)] auf.
use clap::Parser;
#[derive(Parser)]
struct Cli {
#[arg(long, long_help = "A detailed explanation shown only with --help")]
flag: bool,
}Result aus main zurückgeben
Für Laufzeitfehler nach dem Parsen geben Sie aus main ein Result zurück. Der Operator ? gibt Fehler weiter, und Programme ohne clap geben sie mit einem von null verschiedenen Exit-Code aus.
fn main() -> Result<(), String> {
let value = "42";
let n: i32 = value.parse().map_err(|_| "bad number".to_string())?;
println!("parsed {}", n);
Ok(())
}Benutzerdefinierte Fehlerformatierung
clap formatiert Verwendungsfehler automatisch. Sie können jedoch mit clap::Error und cmd.error() eigene Fehler für kontextspezifische Meldungen erstellen.
use clap::{CommandFactory, Parser};
#[derive(Parser)]
struct Cli { value: i32 }
fn fail() {
let mut cmd = Cli::command();
cmd.error(clap::error::ErrorKind::ValueValidation, "value too large").exit();
}Validierungszusammenfassung in einfachem Rust
Im Kern prüft CLI-Validierung einen Wert und meldet einen klaren Fehler. Hier sehen Sie den vollständigen Ablauf.
fn validate_port(p: u32) -> Result<u32, String> {
if (1..=65535).contains(&p) { Ok(p) }
else { Err(format!("port {} out of range", p)) }
}
fn main() {
match validate_port(8080) {
Ok(p) => println!("using port {}", p),
Err(e) => eprintln!("error: {}", e),
}
}Kurzer Test
Testen Sie Ihr Verständnis von Validierung und Hilfe.
Zusammenfassung
Sie können nun ausgereifte CLIs erstellen:
value_parsererzwingt Wertebereiche und benutzerdefinierte RegelnValueEnumbegrenzt die Auswahlmöglichkeitenconflicts_withbildet inkompatible Flags ab- Dokumentationskommentare werden zu Hilfetext
- Geben Sie für Laufzeitfehler aus main ein
Resultzurück
Damit ist der clap-Kurs abgeschlossen.
Häufig gestellte Fragen
Ist die Lektion „Validierung und Hilfe“ kostenlos?
Ja — der vollständige Text von „Validierung und Hilfe“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn Rust Coding-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Validierung und Hilfe“?
Ausgereifte CLIs Du übst Learn Rust Coding mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn Rust Coding zu starten?
Keine Vorkenntnisse erforderlich. Learn Rust Coding auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Validierung und Hilfe“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn Rust Coding-Lektion Code schreiben und ausführen?
Ja. Jede Learn Rust Coding-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- clap-Grundlagen
- Unterbefehle
- Derive-API
- Validierung und Hilfe