An ultra simple CLI arguments parser.
If you think that this library doesn't support some feature, it's probably intentional.
-vvv
, -abc
or -j1
).=
or nothing. See build features.eq-separator
Allows parsing arguments separated by =
. Enabled by default.
This feature adds about 1KiB to the resulting binary.
short-space-opt
Makes the space between short keys and their values optional (e.g. -w10
).
If eq-separator
is enabled, then it takes precedence and the '=' is not included.
If eq-separator
is disabled, then -K=value
gives an error instead of returning "=value"
.
The optional space is only applicable for short keys because --keyvalue
would be ambiguous.
The core idea of pico-args
is to provide some "sugar" for arguments parsing without
a lot of overhead (binary or compilation time wise).
There are no point in comparing parsing features since pico-args
supports
only the bare minimum. So we will compare only the size overhead and compilation time.
There are a lot of arguments parsing implementations, but we will use only these one:
| | null | pico-args
| clap
| gumdrop
| structopt
| argh
|
|------------------------|---------|-------------|----------|-----------|-------------|---------|
| Binary overhead | 0KiB | 14.3KiB | 373.0KiB | 19.8KiB | 371.4KiB | 17.6KiB |
| Build time | 0.4s | 0.7s | 5.6s | 4.1s | 6.2s | 4.0s |
| Number of dependencies | 0 | 0 | 8 | 5 | 20 | 8 |
| Tested version | - | 0.4.0 | 2.33.3 | 0.8.0 | 0.3.21 | 0.1.4 |
.text
section size of an app with
arguments parsing and a hello world app.hyperfine 'cargo clean; cargo build --release'
.test-apps/
.MIT