11 releases

0.5.0 Jun 4, 2022
0.4.2 Jun 3, 2021
0.4.1 May 3, 2021
0.4.0 Jan 3, 2021
0.2.0 Jul 26, 2019

#49 in Command-line interface

Download history 185200/week @ 2024-10-10 195081/week @ 2024-10-17 189407/week @ 2024-10-24 184011/week @ 2024-10-31 183010/week @ 2024-11-07 181631/week @ 2024-11-14 183117/week @ 2024-11-21 185891/week @ 2024-11-28 198321/week @ 2024-12-05 194840/week @ 2024-12-12 133182/week @ 2024-12-19 91243/week @ 2024-12-26 156487/week @ 2025-01-02 204145/week @ 2025-01-09 199811/week @ 2025-01-16 166527/week @ 2025-01-23

737,490 downloads per month
Used in 823 crates (144 directly)

MIT license

31KB
666 lines

pico-args

Build Status Crates.io Documentation Rust 1.32+

An ultra simple CLI arguments parser.

If you think that this library doesn't support some feature, it's probably intentional.

  • No help generation
  • Only flags, options, free arguments and subcommands are supported
  • Options can be separated by a space, = or nothing. See build features
  • Arguments can be in any order
  • Non UTF-8 arguments are supported

Build features

  • eq-separator

    Allows parsing arguments separated by =
    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

  • combined-flags

    Allows combination of flags, e.g. -abc instead of -a -b -c
    If short-space-opt or eq-separator are enabled, you must parse flags after values, to prevent ambiguities

Limitations

The main fundamental limitation of pico-args is that it parses arguments in an arbitrary order. This is because we have a sort of "steaming" API and we don't know all the keys/arguments beforehand. This could lead to some unexpected behaviors. Specifically, let's say you have a following arguments:

--arg1 --arg2 value

If your parser tries to parse --arg1 as key-value first, than its value would be --arg2 and not value, because the parser simply takes the "next" argument. A properer parser would knew that --arg2 is a key and will return an error, since the value is missing.

If your parser tries to parse --arg2 as a flag first and then --arg1 as key-value, than its value would be value, because --arg2 was already removed by the parser and the arguments list looks like --arg1 value to the parser.

If such behavior is unacceptable to your application, then you have to use a more high-level arguments parsing library.

Alternatives

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. Here is a great comparison of various arguments parsing libraries.

License

MIT

No runtime deps

Features

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy