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 -- --help