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 在 开发工具
每月51次下载
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
}
}