*arg-kit* is a featherweight library that helps parse arguments using one of Rust's most versatile and powerful syntaxes: `match {}` Do you really need bloated proc macros when collecting arguments can be simplified to a `.next()`? You have zero indication of what's going on under the hood, so you can't implement your own behaviour. That is why I don't call it an "argument parser" on its own. Your program parses the arguments, this just helps iterate over it, like so: ```rust let mut argv = std::env::args(); for_args!(argv; { arg!(-h | --help) => eprintln!("{HELP_TEXT}"), arg!(-v | --value) => do_something(argv.next()?), unknown => panic!("Unknown argument {unknown}"), }); ``` ...which expands to: ```rust let mut argv = std::env::args(); while let Some(args) = argv.next() { for arg in args.as_arg() { match arg { ... ``` Take a look through the [docs](https://docs.rs/arg-kit) for specific details. The sauce is hosted on [my website](http://64-tesseract.us.to/projects#arg-kit) because GitHub is gay.