9 个稳定版本
使用旧的 Rust 2015
2.2.0 | 2018年2月27日 |
---|---|
2.1.0 | 2017年4月16日 |
2.0.4 | 2016年7月13日 |
2.0.2 | 2016年4月6日 |
0.1.1 | 2016年3月13日 |
在 命令行界面 中排名第 249
628 次每月下载
在 6 个 crate 中使用(直接使用 5 个)
59KB
1K SLoC
args
基于 getopts crate 的简单命令行参数解析和验证实现。
要使用 args
crate,只需创建一个 Args
对象,并通过 flag(...)
和 option(...)
方法开始注册可能的命令行选项。一旦注册了所有选项,就可以直接从命令行解析参数,或者提供一个自己的参数向量。
解析过程中遇到的任何错误都将被封装在 ArgsError
中返回。如果解析过程中没有错误,可以通过调用 value_of(...)
和 validated_value_of(...)
从 args
对象中检索值。
就这么多!
用法
此 crate 在 crates.io 上,可以通过将 args
添加到项目 Cargo.toml
中的依赖项来使用。
[dependencies]
args = "2.0"
并在 crate 根目录中添加以下内容
extern crate args;
示例
以下示例展示了为需要指定零(0)到十(10)之间的迭代次数的应用程序进行简单命令行解析,接受可选的日志文件名并响应用户帮助标志。
extern crate args;
extern crate getopts;
use getopts::Occur;
use std::process::exit;
use args::{Args,ArgsError};
use args::validations::{Order,OrderValidation};
const PROGRAM_DESC: &'static str = "Run this program";
const PROGRAM_NAME: &'static str = "program";
fn main() {
match parse(&vec!("-i", "5")) {
Ok(_) => println!("Successfully parsed args"),
Err(error) => {
println!("{}", error);
exit(1);
}
};
}
fn parse(input: &Vec<&str>) -> Result<(), ArgsError> {
let mut args = Args::new(PROGRAM_NAME, PROGRAM_DESC);
args.flag("h", "help", "Print the usage menu");
args.option("i",
"iter",
"The number of times to run this program",
"TIMES",
Occur::Req,
None);
args.option("l",
"log_file",
"The name of the log file",
"NAME",
Occur::Optional,
Some(String::from("output.log")));
try!(args.parse(input));
let help = try!(args.value_of("help"));
if help {
args.full_usage();
return Ok(());
}
let gt_0 = Box::new(OrderValidation::new(Order::GreaterThan, 0u32));
let lt_10 = Box::new(OrderValidation::new(Order::LessThanOrEqual, 10u32));
let iters = try!(args.validated_value_of("iter", &[gt_0, lt_10]));
for iter in 0..iters {
println!("Working on iteration {}", iter);
}
let optional_val = try!(Self::optional_value_of::<String>(&args, SERVICE));
if let Some(val) = optional_val {
// val is `Some`
} else {
// val is `None`
}
println!("All done.");
Ok(())
}
依赖项
~530KB