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