2 个版本
0.1.1 | 2020 年 3 月 4 日 |
---|---|
0.1.0 | 2020 年 3 月 4 日 |
#179 在 #arguments
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 类型实现了)来自动转换参数。