3 个不稳定版本

0.2.0 2021 年 9 月 28 日
0.1.1 2021 年 9 月 13 日
0.1.0 2021 年 9 月 13 日

#5#argument-parsing

自定义许可证

16KB
145 代码行(不含注释)

Pieces

一个以控制为前提构建的参数解析器。

解析

你得到的结果取决于你解析的顺序。如果你想只解析位置参数,那么只需调用 .parse_args()。如果你想先解析标志参数(出于某种奇怪的原因),那么在调用 .parse_args() 之前调用 .parse_flags()下面的例子中先解析位置参数,然后解析标志参数。

示例

use piecesv2;

let parser = &mut piecesv2::parser::Parser::build2(
    std::env::args(),
    vec![], // Commands, not currently implemented...
    vec![
        piecesv2::args::Arg::new("name"), // First positional argument
        piecesv2::args::Arg::new("age"), // Second positional argument

        piecesv2::args::Arg::new("email") // First flag argument
            .short("e")
            .long("email")
            .set(piecesv2::args::ArgSettings::HAS_VALUE), // Takes value

        piecesv2::args::Arg::new("phone-number") // Second flag argument
            .short("p")
            .long("phone-number")
            .set(piecesv2::args::ArgSettings::HAS_VALUE)   
            .set(piecesv2::args::ArgSettings::MULTIPLE), // Allows multiple of this flag
    ] // Args and Flags.
);

// Parses only positional arguments:
let results = parser.parse_args();

if !results.contains_key(&String::from("age")) {
    panic!("Age is a required argument that wasn't provided.");
}

// Parsers only flags:
let flags = parser.parse_flags();

if !flags.contains_key(&String::from("email")) {
    panic!("Email is a required flag that wasn't provided.");
}

依赖关系

~160KB