7个版本

0.2.1 2020年8月27日
0.2.0 2020年8月27日
0.1.4 2020年4月13日

#29 in #parsed

GPL-3.0许可证

16KB
108

Latest version Documentation

pargs

命令行参数解析器

pargs - 命令行参数解析器

pargs的设计目标是简单地以定义的格式返回解析后的参数,以便于查找。

pargs支持三种常见的参数类型:命令、标志和选项。

使用pargs

使用pargs非常简单:定义程序需要的所有三种类型的参数,并将它们作为单个 Vec<String> 传递给 pargs::parse()parse() 将返回一个按类别键控的 Matches 结构,以便您的应用程序可以轻松地解释它们。

成功解析的参数的返回值如下

  • command_args: Vec<String>
  • flag_args: Vec<String>
  • option_args: HashMap

定义

  • command_args 被定义为没有分配值的单个参数
  • command_args 参数应无横杠输入
  • flag_args 应为布尔值
  • flag_args 不应分配值 - 如果它们存在,则解释为 true
  • option_args 应分配值
  • option_args 应用 - 字符表示
  • option_args 可以通过 = 或参数和值之间的空格分配值

示例

以下示例展示了定义了所有三种类型的参数(命令、标志和选项)的简单程序。Pargs从 env::args() 接收一个 Vec<String>,此时它会解析参数,并将它们以简单的数据结构返回给程序。

use std::env;
use pargs::Pargs;

let actual_args: Vec<String> = env::args().collect();
let command_args = vec![String::from("cool_command")];
let flag_args = vec![String::from("-h")];
let option_args = vec![String::from("-j"), String::from("-i")];

let parsed_args = Pargs::parse(actual_args, command_args, flag_args, option_args);

match parsed_args {
    Ok(parsed_args) => println!("{:?}", parsed_args),
    Err(parsed_args) => println!("{}", parsed_args),
}

如果我们使用 cargo run cool_command -h -j=test123 -i=test456 运行此程序,输出将如下 Matches { command_args: ["cool_command"], flag_args: ["-h"], option_args: {"-i": "test456", "-j": "test123"} }

从这里,我们可以查找这些值并在我们的程序中使用它们。

无运行时依赖