3个版本
0.0.3 | 2024年8月12日 |
---|---|
0.0.2 | 2024年7月14日 |
0.0.1 | 2024年7月14日 |
621 在 解析器实现 中
每月 123 次下载
20KB
301 行
Flager:轻量级命令行参数解析器
Crates.io: https://crates.io/crates/flager
Docs.rs: https://docs.rs/flager/0.0.2/flager/
这是一个Rust库,可以帮助您在应用程序中解析命令行参数。它提供了一种简单灵活的方式来定义标志、解析它们的值以及处理不同类型的参数。
特性
- 标志:您可以定义具有短名称和长名称的标志,并指定它们是否为必需的或具有默认值。
- 解析:该库可以自动解析标志的值并将它们转换为所需的数据类型,如
String
、PathBuf
、bool
和所有整数类型。 - 参数处理:该库提供了三种不同的处理参数的方式
Remainder
:收集标志后的所有剩余参数。SmartRemainder
:收集遇到新标志之前的所有参数。Count
:收集特定数量的参数。
用法
以下是从examples/01.rs的示例,展示如何使用该库
use std::{path::PathBuf, ops::Range};
use flager::{Flag, Parser, NArgs};
fn main() {
let parser = Parser::new();
let flag = Flag::<i32>::new("-f", "--flag")
.mandatory()
.default(420)
.help("A mandatory integer flag");
println!("Flag: {value}", value = parser.parse(&flag).unwrap());
////////////////////////////////////////
let flag2 = Flag::<PathBuf>::new("-p", "--path")
.default("default/path".into())
.help("An optional path flag");
println!("Path: {path:?}", path = parser.parse_or_default(&flag2));
////////////////////////////////////////
let flag3 = Flag::<String>::new("-a", "--args")
.help("Multiple arguments");
println!("Arguments: {args:?}", args = parser.parse_many(&flag3, NArgs::Remainder));
//////////////////////////////////////// ^ You can read about `NArgs` in `nargs.md`.
let flag4 = Flag::<Range::<usize>>::new("-r", "--range")
.help("Multiple arguments");
println!("Ranges: {ranges:?}", ranges = parser.parse_many(&flag4, NArgs::SmartRemainder));
}
在这个例子中,我们定义了三个标志
- 一个必需的整数标志
-f
或--flag
。 - 一个可选路径标志
-p
或--path
。 - 一个可以接受多个参数的标志
-a
或--args
。
然后我们使用解析器来解析这些标志的值并相应地处理参数。
支持类型
该库支持以下数据类型
字符串
PathBuf
布尔值
isize
、i8
、i16
、i32
、i64
、i128
usize
、u8
、u16
、u32
、u64
、u128
范围<isize>
,范围<i8>
,范围<i16>
,范围<i32>
,范围<i64>
,范围<i128>
范围<usize>
,范围<u8>
,范围<u16>
,范围<u32>
,范围<u64>
,范围<u128>