I agree that clap v3 (with it's derive capabilities basically incorporating structopt) is awesome. But it's still pretty heavyweight, although you can make it a bit more lightweight by turning off some features. In some cases, I actually put the CLI args in a separate crate, so that changing the program doesn't involve rebuilding the CLI arg structures. As a bonus, it makes changes to the CLI much more obvious in code review.