2 个版本

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

命令行界面 中排名 #950

MIT 许可证

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

无运行时依赖