parasyte / onlyargs

Only argument parsing! Nothing more.
MIT License
13 stars 2 forks source link

Crates.io Documentation unsafe forbidden GitHub actions GitHub activity GitHub Sponsors

Only argument parsing! Nothing more.

Why?

MSRV Policy

The Minimum Supported Rust Version for onlyargs will always be made available in the MSRV.md file on GitHub.

Rationale

There's an argument parsing crate for everyone. So why write another?

onlyargs is an example of extreme minimalism! The only thing it provides is a trait and some utility functions; you're expected to do the actual work to implement it for your CLI argument struct. But don't let that scare you away! The parser implementation in the "full" example is only around 50 lines! (Most of the file is boilerplate.)

The goals of this parser are correctness, fast compile times, and convenience.

100% safe Rust

No shenanigans! The only unsafe code is abstracted away in the standard library.

Correctness

Fast compile times

See myn benchmark results.

Convenience

Argument parsing is dead simple (assuming your preferred DSL is opinionated and no-nonsense). There is no reason to overcomplicate it by supporting multiple forms like --argument 123 and --argument=123 or -a 123 and -a123. Just pick one!

The provided examples use the former in both cases: --argument 123 and -a 123 are accepted for arguments with a value. Supporting both long and short argument names is just a pattern!

Some("--argument") | Some("-a")

It is fairly straightforward to derive an implementation with a proc_macro. Compare the "full-derive" example to the "full" example.