2 个版本
0.1.1 | 2020年8月4日 |
---|---|
0.1.0 | 2020年8月3日 |
在 命令行界面 中排名 #950
12KB
136 行
arguman
使用 Rust 编写的简单命令行参数解析器。
要使用此解析器,只需创建一个新的 MagicArguman!
Arguman 的使用示例
let args:Vec<String> = env::args().collect();
let mut manager = arguman::MagicArguman::new(args);
manager.input()
.flag::<u32>("n")
.flag::<f64>("f")
.flag_solo("s")
.flag_req::<String>("name");
let errors:&Vec<MagicErr> = manager.get_errors();
let input:Option<&String> = manager.get_input();
let name:Option<&String> = manager.get::<String>("name");
let number:Option<&u32> = manager.get::<u32>("n");
那么,这一切是如何工作的呢??
请看这里!
在上面的示例中,arguman::MagicArguman::new(args)
接收参数的类型为 Vec<String>
。确保你给它分配的名称是可变的。否则,它将无法做很多事情。
input()
方法让解析器知道你希望在它之前获取用户输入,而不带任何标志。例如,如果名为 app 的程序被执行,如 ./app antidisestablishmentarianism
,则 input()
将读取并存储 antidisestablishmentarianism
的一个克隆值作为 String,该值可以在以后通过使用专用方法 get_input()
进行访问(只读)。
flag<T>(&str)
方法让解析器知道你想要添加一个 可选 标志。类型 必须 在编译时静态分配。可以通过使用方法 get<T>(&str)
访问(只读)标志的可能值。如果两种类型不匹配,将记录错误,并返回 None
的值。
方法 flag_solo(&str)
通知解析器您希望添加一个 可选 的布尔标志。与之前的方法不同,创建标志时不需要指定类型。然而,像之前的方法一样,可以通过使用方法 get<bool>(&str)
来访问(只读)可能的值。
方法 flag_req<T>(&str)
是 flag<T>(&str)
方法的特化版本。这个方法的特别之处在于标志是 非可选的,并且是 必需的。存储在其中的值可以像非特化版本一样访问。如果用户没有使用标志,将会记录错误。要检查在解析任何必需标志时是否发生错误,只需使用 error()
方法,如果发生错误,将返回 true
,如果没有错误,则返回 false
。如果需要有关错误的更多信息,可以通过方法 get_errors()
来访问(只读),该方法将返回一个 &Vec<MagicErr>
。
如果您想知道发生了什么类型的错误,错误以枚举 MagicErr
返回,其中包含以下四个错误及其相关信息
enum MagicErr{
FlagErr(String),
ParseErr(String),
ValueErr(String),
InputErr
}
FlagErr
表示省略了一个非可选标志。- 包含一个
String
,其中包含省略的标志。
- 包含一个
ParseErr
表示无法解析类型- 可能意味着您在设置标志并获取其值时设置了不同的类型
- 很可能是用户可能已经将
BUSHDID911
写作而不是 64 位浮点数。
ValueErr
表示解析器检测到值缺失!- 用户可能已经写了一个标志,但没有后续写值
InputErr
表示您决定使用input()
,但解析器没有检测到输入- 不能调用但有无效输入(任何输入都是有效输入,甚至是标志)。
有疑问/建议吗?
不要害羞,尽管提问!
mov-rax 2020