#命令行参数 #解析器 #参数解析器 #选项 #opt #第一个 #顺序

bin+lib getopt

一个最小化、(本质上) POSIX 兼容的选项解析器

28 个版本 (12 个稳定版)

使用旧的 Rust 2015

1.1.7 2024年6月23日
1.1.6 2024年3月30日
1.1.4 2024年1月19日
1.1.3 2022年1月6日
0.3.1 2018年11月30日

#288命令行工具

Download history 118/week @ 2024-04-25 158/week @ 2024-05-02 207/week @ 2024-05-09 142/week @ 2024-05-16 150/week @ 2024-05-23 117/week @ 2024-05-30 85/week @ 2024-06-06 96/week @ 2024-06-13 271/week @ 2024-06-20 39/week @ 2024-06-27 16/week @ 2024-07-04 154/week @ 2024-07-11 96/week @ 2024-07-18 115/week @ 2024-07-25 56/week @ 2024-08-01 38/week @ 2024-08-08

每月下载量 316
11 包(10 个直接)中使用

BSD-3-Clause-Clear

28KB
463

getopt

一个最小化、(本质上) POSIX 兼容的选项解析器。

getopt::Parser 遍历提供的参数,按照命令行上的顺序一次生成一个选项,直到遇到第一个非选项参数。

示例

#![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(())
}

无运行时依赖