1 个不稳定版本
0.1.0 | 2024年1月24日 |
---|
#978 在 命令行界面
63KB
1.5K SLoC
在几分钟内创建一个“功能型”命令行参数解析器。
有关更多详细信息,请参阅 docs.rs。
lib.rs
:
Fcla 允许您在几分钟内创建一个“功能型”命令行参数解析器。只需从创建一个 Args
类型开始,然后使用 #[derive(FromArgs)]
注释您的类型,最后使用 parse_cla
函数解析您的参数。非常适合小型项目和快速开发。
示例
以下示例展示了 fcla
大多数功能
use fcla::FromArgs;
#[derive(Debug, FromArgs)]
enum Args {
Simple { first: Box<str>, second: i32 },
Nested { nested: Nested },
Optional { optional: Option<Box<str>> },
Sequence { sequence: Vec<i32> },
Mapping { map: std::collections::HashMap<i32, Box<str>> },
Range { range: fcla::RangeDynamic<i32> },
Custom { tree: Tree<Box<str>> },
Complex { sequence: Vec<Tree<Box<str>>> },
}
#[derive(Debug, FromArgs)]
struct Nested {
small: u8,
medium: u16,
large: u32,
}
#[derive(Debug, FromArgs)]
enum Tree<T> {
Root(T),
Branch { left: Box<Self>, right: Box<Self> },
}
fn main() -> fcla::MainResult<()> {
let args = fcla::parse_cla::<Args>()?.args;
println!("{:?}", args);
Ok(())
}
您可以使用以下参数运行它
简单'helloworld' -1
嵌套128 32768 2147483648
可选,word
可选.
序列, 1 , -1 ,1E3, -0.1E4 .
映射, 4four, 3three, 2two, 1one.
范围,, 0 10
范围.,= 10
自定义分支分支根 hello 根 world 分支根来自分支根 fcla 根.
复杂,分支根嵌套根类型,根示例.
语法
Fcla 的语法可以分为四个主要部分。
派生
派生结构体按它们声明的顺序解析其字段。
派生枚举通过将第一个参数与枚举的变体名称匹配,然后将剩余的参数解析到相应的变体结构体中。
集合
集合被解析为一系列 Option<T>
,其中可以有零个或多个 Some
,以 None
结尾。 Some
被解析为 ,
,而 None
被解析为 .
。列表和集合由 T
组成,而映射由 [KeyValue<K, V>
] 组成。
有关详细信息,请参阅 Args::as_iter
方法。
数字
数字使用与浮点数相同的语法进行解析,但移除了无穷大和 NaN 的情况。这意味着 0.1e1
将成功解析为 [u32
]。
有关详细信息,请参阅 [num
] 模块。
定制
依赖项
~0.7–1.3MB
~28K SLoC