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