#arguments #command-line-arguments #tool #arg #compile-time #cli

bin+lib arg_parse

一个用于解析控制台或自定义参数的工具,无依赖项

5 个版本 (3 个破坏性更新)

0.3.0 2023年1月5日
0.2.3 2023年1月4日
0.1.1 2023年1月3日
0.0.9 2023年1月3日

1431开发工具

Download history 8/week @ 2024-03-14 3/week @ 2024-03-28 2/week @ 2024-04-04

每月51次下载

MIT 许可证

23KB
270

arg_parse for rust

免责声明

开发者的接口仍在进行中。因此,在更新到 v1.0 之前,预计会有一些小改动和大改动。

描述

arg_parse 是一个简化命令行参数处理的工具。它没有任何依赖项,初始化是在编译时完成的。

特性 & 目标

  • 解析 短选项(使用 -- 设置的值,默认为 false,使用时设置为 true。)
  • 解析 长选项(在 - 之后提到的值,其后跟其值(作为字符串))
  • 解析 非选项(没有任何前缀的单个值参数)
  • 解析 子命令(只能使用一个,所有后续参数都与之一致)
  • 返回结果而不是抛出不完整的错误消息
  • 简单创建解析器
  • 能够将解析器作为常量或静态变量创建(在编译时)
  • 能够提供参数列表(不使用 std::env::args() 中的参数)
  • 能够提供默认值
  • 能够使参数或子命令成为必需的
  • 缓存 CLI 参数解析的结果以略微提高性能
  • 满足常见的模式,如在此 规范 中描述的那样

安装

arg_parse = "0.3.0" 添加到您的 cargo 依赖项中 (cargo.toml)。

[dependencies]
arg_parse = "0.3.0"

示例

打印找到的选项或解析错误。
参数

  • 长选项:hello 没有其他参数
  • 短选项:b 有两个参数
  • 短选项:a 没有参数
use arg_parse::ArgParser;
use arg_parse::config;

//List of all available long options
const LONG_OPTIONS: &'static [config::LongOption] = &[
   //Define a long option called hello without parameters
   config::LongOption{name: "hello", value_count: 0}
   ];
//List of all available short options
const SHORT_OPTIONS: &'static [config::ShortOption] = &[
   //Define a short option called b with two parameters
   config::ShortOption{name:'b', value_count: 2},
   //Define a short option called a without parameters
   config::ShortOption{name:'a', value_count: 0}
   ];
const NON_OPTIONS: &'static [config::NonOption] = &[
   //Define a non option called non-option with three parameters
   config::NonOption{name: "non-option", value_count: 3},
   //Define a short option called a without parameters
   config::NonOption{name:"last-option", value_count: 0}
   ];
//Create the root command which is the program itself basically
const PARSER_ROOT_CMD: config::Config = config::Config::from(SHORT_OPTIONS, LONG_OPTIONS, NON_OPTIONS);

//Create the parser from the root command
static PARSER: ArgParser = ArgParser::from(PARSER_ROOT_CMD);

fn main() {
   let root_cmd = PARSER.parse(); //Parse the command line arguments
   match root_cmd {
       Ok(result) => println!("Result: {:?}", result), //Print result
       Err(error) => println!("ERROR: {:?}", error) //Print errors if occur
   }
}

Github 仓库
Crates.io
Rust 文档

无运行时依赖