#parser #arguments #command-line-arguments #fork #team #getopt #options

pgetopts

类似于getopts的选项解析,是Rust团队getopts的一个分支

3个版本

使用旧的Rust 2015

0.1.2 2015年6月10日
0.1.1 2015年6月9日
0.1.0 2015年6月9日

#getopt中排名20

每月下载量25
用于 2 crates

MIT/Apache

58KB
1.5K SLoC

pgetopts

Build Status

一个用于CLI工具的Rust库,用于选项解析,是Rust团队getopts的一个分支

用法

将此添加到您的Cargo.toml

[dependencies]
pgetopts = "0.1.0"

并将此添加到您的crate根目录

extern crate pgetopts;

lib.rs:

简单的getopt替代品。

通过使用reqoptoptoptoptflag构建选项向量,或者自己构建它们,并将它们传递给pgetopts,同时传递一个实际的参数向量(不包括argv[0])。您将获得失败代码或匹配项。您需要验证匹配项中的“免费”参数数量是否如您所期望。使用opt_*访问器从匹配对象中获取参数值。

单字符选项应出现在命令行上,前面有一个短划线;多字符选项应在两个短划线之后。需要参数的选项接受其参数在空格或等号之后。单字符选项不需要空格。

用法

此crate位于crates.io上,可以通过将pgetopts添加到项目Cargo.toml中的依赖项来使用。

[dependencies]
pgetopts = "0.2"

并将此添加到您的crate根目录

extern crate pgetopts;

示例

以下示例展示了简单命令行解析,该应用程序需要指定输入文件,接受可选输出文件名后跟-o,并接受-h--help作为可选标志。

extern crate pgetopts;
use pgetopts::Options;
use std::env;

fn do_work(inp: &str, out: Option<String>) {
    println!("{}", inp);
    match out {
        Some(x) => println!("{}", x),
        None => println!("No Output"),
    }
}

fn print_usage(program: &str, opts: Options) {
    println!("Usage: {} [options]", program);
    print!("{}", opts.options());
}

fn main() {
    let args: Vec<String> = env::args().collect();
    let program = args[0].clone();

    let mut opts = Options::new();
    opts.optopt("o", "", "set output file name", "NAME");
    opts.optflag("h", "help", "print this help menu");
    let matches = match opts.parse(&args[1..]) {
        Ok(m) => { m }
        Err(f) => { panic!(f.to_string()) }
    };
    if matches.opt_present("h") {
        print_usage(&program, opts);
        return;
    }
    let output = matches.opt_str("o");
    let input = if !matches.free.is_empty() {
        matches.free[0].clone()
    } else {
        print_usage(&program, opts);
        return;
    };
    do_work(&input, output);
}

依赖关系

~235KB