#arguments-parser #arguments #parser

bin+lib simple_arguments

一个简单的参数解析器

2 个版本

0.1.1 2020 年 3 月 4 日
0.1.0 2020 年 3 月 4 日

#179#arguments

GPL-3.0-or-later

11KB
238

如果您想为程序轻松地拥有一个不错的命令行界面,则此软件包很有用。

您可以使用它如下

use std::env::args;

type Error = Box<dyn std::error::Error>;

use simple_arguments::Arguments;

fn main() -> Result<(), Error> {
let mut number: usize = 0;
let mut string: String = String::new();
let mut boolean: bool = false;
let mut help: bool = false;

let usage;
// you have to do this because the lifetimes of the references must be
// greter than the lifetime of the argument struct

{
let mut arguments = Arguments::new(Some("args_tester"));
let mut args = args();
let exec = args.next().unwrap();
let a: Vec<_> = args.collect();

arguments.add(&mut number, "number", "a number");
arguments.add(&mut boolean, "bool", "a boolean value");
arguments.add(&mut string, "string", "a string");
arguments.add_bool(&mut help, "help", "displays the help message");
usage = arguments.usage();

if let Err(e) = arguments.parse(&a[..]) {
println!("{}", e);
print!("{}", usage);
return Ok(());
}
}

if help {
println!("{}", usage);
return Ok(());
}
println!("{} {} {}", number, boolean, string);

Ok(())
}

在此处,我们不是仅定义参数的名称并在之后将它们转换为正确的类型,而是使用一个特殊的特质 Filler(它为所有 FromStr 类型实现了)来自动转换参数。

无运行时依赖