Example 02Beginner
Argument Parsing
Parse CLI arguments without dependencies - flags, options, and positional args
Complete Code
02_argument_parsing.rs
use zfish::Args;
fn main() {
// Parse command-line arguments
let args = Args::parse();
println!("Command: {}", args.command);
// Check for flags
if args.has_flag("verbose") || args.has_flag("v") {
println!("Verbose mode enabled");
}
if args.has_flag("help") || args.has_flag("h") {
print_help();
return;
}
// Get option values
if let Some(output) = args.get_option("output").or_else(|| args.get_option("o")) {
println!("Output file: {}", output);
}
if let Some(count) = args.get_option("count") {
println!("Count: {}", count);
}
// Get positional arguments
if !args.positional.is_empty() {
println!("Files: {:?}", args.positional);
}
}
fn print_help() {
println!("Usage: {} [OPTIONS] [FILES...]", std::env::args().next().unwrap());
println!();
println!("Options:");
println!(" -h, --help Show this help message");
println!(" -v, --verbose Enable verbose output");
println!(" -o, --output <FILE> Output file path");
println!(" --count <N> Number of iterations");
}Output
Command: ./program Output file: result.txt Count: 5 Files: ["input.txt", "data.json"]
Running the Example
Terminal
# Run with various arguments
cargo run --example 02_argument_parsing -- --verbose --output result.txt --count 5 input.txt data.json
# Show help
cargo run --example 02_argument_parsing -- --helpNext Steps