#getopts #opt #parser

bin+lib getopt

A minimal, (essentially) POSIX-compliant option parser

28 releases (12 stable)

Uses old Rust 2015

1.1.7 Jun 23, 2024
1.1.6 Mar 30, 2024
1.1.4 Jan 19, 2024
1.1.3 Jan 6, 2022
0.3.1 Nov 30, 2018

#482 in Command line utilities

Download history 25/week @ 2025-01-04 67/week @ 2025-01-11 65/week @ 2025-01-18 39/week @ 2025-01-25 79/week @ 2025-02-01 88/week @ 2025-02-08 93/week @ 2025-02-15 170/week @ 2025-02-22 75/week @ 2025-03-01 80/week @ 2025-03-08 92/week @ 2025-03-15 65/week @ 2025-03-22 41/week @ 2025-03-29 41/week @ 2025-04-05 54/week @ 2025-04-12 37/week @ 2025-04-19

181 downloads per month
Used in 12 crates (11 directly)

BSD-3-Clause-Clear

28KB
463 lines

getopt

A minimal, (essentially) POSIX-compliant option parser.

getopt::Parser iterates over the provided arguments, producing options one at a time in the order in which they are given on the command line, and stopping at the first non-option argument.

Example:

#![allow(unused_assignments, unused_variables)]

use getopt::Opt;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut args: Vec<String> = std::env::args().collect();
    let mut opts = getopt::Parser::new(&args, "ab:");

    let mut a_flag = false;
    let mut b_flag = String::new();
    loop {
        match opts.next().transpose()? {
            None => break,
            Some(opt) => match opt {
                Opt('a', None) => a_flag = true,
                Opt('b', Some(string)) => b_flag = string.clone(),
                _ => unreachable!(),
            }
        }
    }

    let args = args.split_off(opts.index());

    //

    Ok(())
}

No runtime deps